// Copyright Epic Games, Inc. All Rights Reserved. #include "MemoryModule.h" #include "Analyzers/AllocationsAnalysis.h" #include "Analyzers/CallstacksAnalysis.h" #include "Analyzers/MemoryAnalysis.h" #include "Analyzers/MetadataAnalysis.h" #include "Analyzers/ModuleAnalysis.h" #include "Model/AllocationsProvider.h" #include "Model/CallstacksProvider.h" #include "Model/MetadataProvider.h" #include "TraceServices/Model/AnalysisSession.h" namespace TraceServices { void FMemoryModule::GetModuleInfo(FModuleInfo& OutModuleInfo) { static const FName MemoryModuleName("TraceModule_Memory"); OutModuleInfo.Name = MemoryModuleName; OutModuleInfo.DisplayName = TEXT("Memory"); } void FMemoryModule::OnAnalysisBegin(IAnalysisSession& Session) { // LLM Tag Stats TSharedPtr MemoryProvider = MakeShared(Session); Session.AddProvider(GetMemoryProviderName(), MemoryProvider); Session.AddAnalyzer(new FMemoryAnalyzer(Session, MemoryProvider.Get())); // Module // The Module provider is created and registered by FModuleAnalyzer when the ModuleInit event is detected. Session.AddAnalyzer(new FModuleAnalyzer(Session)); // Callstack TSharedPtr CallstacksProvider = MakeShared(Session); Session.AddProvider(GetCallstacksProviderName(), CallstacksProvider); Session.AddAnalyzer(new FCallstacksAnalyzer(Session, CallstacksProvider.Get())); // Metadata TSharedPtr MetadataProvider = MakeShared(Session); Session.AddProvider(GetMetadataProviderName(), MetadataProvider, MetadataProvider); Session.AddAnalyzer(new FMetadataAnalysis(Session, MetadataProvider.Get())); // Allocations TSharedPtr AllocationsProvider = MakeShared(Session, *MetadataProvider); Session.AddProvider(GetAllocationsProviderName(), AllocationsProvider, AllocationsProvider); Session.AddAnalyzer(new FAllocationsAnalyzer(Session, *AllocationsProvider, *MetadataProvider)); } void FMemoryModule::GetLoggers(TArray& OutLoggers) { OutLoggers.Add(TEXT("Memory")); } } // namespace TraceServices