- Added "Discovered" status for symbol resolving of a module.
- Fixed deadlock for analysis thread when session completes. This bug also didn't allowed Insights app to terminate when closed. The bug occurs for relatively short mem trace sessions when the session analysis completes before callstack resolving fully loads all modules.
- Fixed issue where number of Discovered symbols for a module was lower than Resolved + Failed. Note: This issue might still occur when a module is reloaded, but should not occur anymore for normal callstack resolving.
#rb Johan.Berg
#preflight 62288cd031133a23da76cf94
[CL 19320366 by ionut matasaru in ue5-main branch]
* Implements functionality to search for symbols in a stack of search directories. Search directories can be added from configuration, environment variables or explicitly specified by user.
* Exposes module information and ability to enumerate detected modules.
* Adds functionality to attempt loading symbols for a module in a specific directory.
#rb ionut.matasaru, martins.mozeiko
#jira UE-137221
#preflight 61d56928932a02483cc346f7
#preflight 61d571e0ec35d1b940dad984
#ROBOMERGE-AUTHOR: johan.berg
#ROBOMERGE-SOURCE: CL 18517208 in //UE5/Release-5.0/... via CL 18517221
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18517223 by johan berg in ue5-release-engine-test branch]
This represents UE4/Main @17911760, Release-5.0 @17915875 and Dev-PerfTest @17914035
[CL 17918595 by aurel cordonnier in ue5-release-engine-test branch]
Implementation details:
- PS4 & PS5 uses dwarf symbol format and uses Syms symbol resolver.
- To resolve symbols the path to folder where .self file is built currently must be specified in UE_INSIGHTS_SYMBOL_PATH env variable for Insights.
- Multiple paths can be separated by ; in this variable.
- Build for PS5 does not seem to have PLATFORM_PS5 define, I used defined(__PS5__).
- PS5 runtime collects and sends callstacks, but Syms resolver does not support dwarf v5 format yet, which is used on PS5 toolchain.
#rb none
#preflight 6112ead49c7bb10001bc63fc
#ROBOMERGE-SOURCE: CL 17128247 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v855-17104924)
[CL 17128270 by martins mozeiko in ue5-release-engine-test branch]
- TraceServices: Changed ReadNetProfilerProvider, ReadMemoryProvider, ReadDiagnosticsProvider to return a pointer to the respective provider (instead of a reference). Can return nullptr. The UI should not assume the provider exists.
- TraceServices: Added GetNetProfilerProviderName, GetMemoryProviderName, GetDiagnosticsProviderName, GetAllocationsProviderName to return name of respective provider.
- TraceServices: Added ReadModuleProvider + GetModuleProviderName, ReadCallstacksProvider + GetCallstacksProviderName to access respective providers.
- TraceServices: Added a default empty implementation to IModule for GenerateReports, GetLoggers and GetCommandLineArgument.
- TraceServices: Changed FAnalysisService::StartAnalysis to not create default providers for Memory (LLM Stats), NetProfiler and Diagnostics, but to allow the respective modules (FMemoryModule, FNetProfilerModule, FDiagnosticsModule) to create the providers.
- TraceInsights: Fixed UI code to check if the Memory, NetProfiler and Diagnostics provider are available.
#rb Catalin.Dragoiu, Johan.Berg
#ROBOMERGE-SOURCE: CL 16967698 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v838-16927207)
[CL 16967704 by ionut matasaru in ue5-release-engine-test branch]
- Added virtual destructor to all Provider classes.
- Added "explicit" to several constructors of Provider classes.
#rb Catalin.Dragoiu
#ROBOMERGE-SOURCE: CL 16924223 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v836-16769935)
[CL 16924234 by ionut matasaru in ue5-release-engine-test branch]
Implements persistent symbol storage using the cache layer. Symbols are stored in a cached paged array and with references to a cached string store for module and symbol names and filenames. Previously saved symbols are loaded at the start of the session and any new symbols that are discovered during the session is stored on close.
#rb ionut.matasaru
[CL 16512568 by Johan Berg in ue5-main branch]
Previously the name was only displayed when results was successful. With this change we use the additional information in the status code to display module name and reason why the symbol name could not be resolved.
#jira UE-110008
#rb ionut.matasaru
[CL 16020408 by Johan Berg in ue5-main branch]
- Fixed/added the compile time macros to enable Symslib / DbgHelp resolvers.
- Fixed crash in Symslib resolver when analysis completes (thread safety for array with mapped file regions and handles).
- Attempt to fix a crash in Symslib resolver when loading a module (thread safety).
- Minor code style / coding standards fixes.
#rb Johan.Berg
[CL 15930686 by ionut matasaru in ue5-main branch]
Added hooks to allow the symbol resolver to know when analysis is complete. At this point no more modules or symbol requests will come in and resources can be freed, releasing the file locks on pdb files.
#rb ionut.matasaru
[CL 15696572 by Johan Berg in ue5-main branch]