// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "symbol_resolver.h" #include "trace_model.h" #include #include #include #include namespace zen::trace_detail { struct AnalyzeOptions { int LiveAllocsLimit = 50; // 0 = off int ChurnLimit = 0; // 0 = off; top N churny callstacks uint64_t ChurnDistanceThreshold = 1000; // event distance: allocs freed within N events are "churny" SymbolBackend Symbols = SymbolBackend(1); // Pdb (default) std::filesystem::path HtmlReportPath; // empty = off; standalone offline memory HTML report bool NoCache = false; // skip reading/writing the .ucache_z cache bool EnableCallstackHeuristic = true; // skip leading low-level / third-party frames while keeping the boundary callsite std::vector CallstackSkipPatterns; // wildcard patterns matched against symbol, module name, and module path }; void RunAnalyze(const std::filesystem::path& FilePath, const AnalyzeOptions& Options = {}); } // namespace zen::trace_detail