aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Target/Statistics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Target/Statistics.cpp')
-rw-r--r--lldb/source/Target/Statistics.cpp36
1 files changed, 35 insertions, 1 deletions
diff --git a/lldb/source/Target/Statistics.cpp b/lldb/source/Target/Statistics.cpp
index ebddad837d14..b8ad25e71f06 100644
--- a/lldb/source/Target/Statistics.cpp
+++ b/lldb/source/Target/Statistics.cpp
@@ -62,6 +62,17 @@ json::Value ModuleStats::ToJSON() const {
debug_info_index_loaded_from_cache);
module.try_emplace("debugInfoIndexSavedToCache",
debug_info_index_saved_to_cache);
+ module.try_emplace("debugInfoEnabled", debug_info_enabled);
+ module.try_emplace("symbolTableStripped", symtab_stripped);
+ if (!symfile_path.empty())
+ module.try_emplace("symbolFilePath", symfile_path);
+
+ if (!symfile_modules.empty()) {
+ json::Array symfile_ids;
+ for (const auto symfile_id: symfile_modules)
+ symfile_ids.emplace_back(symfile_id);
+ module.try_emplace("symbolFileModuleIdentifiers", std::move(symfile_ids));
+ }
return module;
}
@@ -174,7 +185,10 @@ llvm::json::Value DebuggerStats::ReportStatistics(Debugger &debugger,
std::vector<ModuleStats> modules;
std::lock_guard<std::recursive_mutex> guard(
Module::GetAllocationModuleCollectionMutex());
- const size_t num_modules = Module::GetNumberAllocatedModules();
+ const uint64_t num_modules = Module::GetNumberAllocatedModules();
+ uint32_t num_debug_info_enabled_modules = 0;
+ uint32_t num_modules_has_debug_info = 0;
+ uint32_t num_stripped_modules = 0;
for (size_t image_idx = 0; image_idx < num_modules; ++image_idx) {
Module *module = Module::GetAllocatedModuleAtIndex(image_idx);
ModuleStats module_stat;
@@ -200,6 +214,10 @@ llvm::json::Value DebuggerStats::ReportStatistics(Debugger &debugger,
}
SymbolFile *sym_file = module->GetSymbolFile();
if (sym_file) {
+
+ if (sym_file->GetObjectFile() != module->GetObjectFile())
+ module_stat.symfile_path =
+ sym_file->GetObjectFile()->GetFileSpec().GetPath();
module_stat.debug_index_time = sym_file->GetDebugInfoIndexTime().count();
module_stat.debug_parse_time = sym_file->GetDebugInfoParseTime().count();
module_stat.debug_info_size = sym_file->GetDebugInfoSize();
@@ -211,6 +229,18 @@ llvm::json::Value DebuggerStats::ReportStatistics(Debugger &debugger,
sym_file->GetDebugInfoIndexWasSavedToCache();
if (module_stat.debug_info_index_saved_to_cache)
++debug_index_saved;
+ ModuleList symbol_modules = sym_file->GetDebugInfoModules();
+ for (const auto &symbol_module: symbol_modules.Modules())
+ module_stat.symfile_modules.push_back((intptr_t)symbol_module.get());
+ module_stat.symtab_stripped = module->GetObjectFile()->IsStripped();
+ if (module_stat.symtab_stripped)
+ ++num_stripped_modules;
+ module_stat.debug_info_enabled = sym_file->GetLoadDebugInfoEnabled() &&
+ module_stat.debug_info_size > 0;
+ if (module_stat.debug_info_enabled)
+ ++num_debug_info_enabled_modules;
+ if (module_stat.debug_info_size > 0)
+ ++num_modules_has_debug_info;
}
symtab_parse_time += module_stat.symtab_parse_time;
symtab_index_time += module_stat.symtab_index_time;
@@ -238,6 +268,10 @@ llvm::json::Value DebuggerStats::ReportStatistics(Debugger &debugger,
{"totalDebugInfoIndexLoadedFromCache", debug_index_loaded},
{"totalDebugInfoIndexSavedToCache", debug_index_saved},
{"totalDebugInfoByteSize", debug_info_size},
+ {"totalModuleCount", num_modules},
+ {"totalModuleCountHasDebugInfo", num_modules_has_debug_info},
+ {"totalDebugInfoEnabled", num_debug_info_enabled_modules},
+ {"totalSymbolTableStripped", num_stripped_modules},
};
return std::move(global_stats);
}