diff --git a/lldb/source/Target/Statistics.cpp b/lldb/source/Target/Statistics.cpp index 8ad8d507268e2..480c1637286b3 100644 --- a/lldb/source/Target/Statistics.cpp +++ b/lldb/source/Target/Statistics.cpp @@ -202,6 +202,10 @@ TargetStats::ToJSON(Target &target, if (process_sp->GetDynamicLoader()) dyld_plugin_name = process_sp->GetDynamicLoader()->GetPluginName(); target_metrics_json.try_emplace("dyldPluginName", dyld_plugin_name); + + if (process_sp->GetCoreFile()) + target_metrics_json.try_emplace("coreFilePath", + process_sp->GetCoreFile().GetPath()); } target_metrics_json.try_emplace("sourceMapDeduceCount", m_source_map_deduce_count); diff --git a/lldb/test/API/functionalities/stats_api/TestStatisticsAPI.py b/lldb/test/API/functionalities/stats_api/TestStatisticsAPI.py index f06c9ae14bb7a..69d0f183586b4 100644 --- a/lldb/test/API/functionalities/stats_api/TestStatisticsAPI.py +++ b/lldb/test/API/functionalities/stats_api/TestStatisticsAPI.py @@ -1,6 +1,8 @@ # Test the SBAPI for GetStatistics() import json +import os + import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * @@ -157,3 +159,24 @@ def test_command_stats_force(self): stats_force.GetAsJSON(stream_force) debug_stats_force = json.loads(stream_force.GetData()) self.assertEqual(debug_stats_force["totalDebugInfoByteSize"], 445) + + def test_command_stats_coredump(self): + """ + Test to see if the coredump path is included in statistics dump. + """ + yaml_file = "minidump.yaml" + minidump_path = self.getBuildArtifact(os.path.basename(yaml_file) + ".dmp") + self.yaml2obj(yaml_file, minidump_path) + target = self.dbg.CreateTarget(None) + process = target.LoadCore(minidump_path) + self.assertTrue(process.IsValid()) + + stats_options = lldb.SBStatisticsOptions() + stats = target.GetStatistics(stats_options) + stream = lldb.SBStream() + stats.GetAsJSON(stream) + debug_stats = json.loads(stream.GetData()) + self.assertTrue("targets" in debug_stats) + target_info = debug_stats["targets"][0] + self.assertTrue("coreFilePath" in target_info) + self.assertEqual(target_info["coreFilePath"], minidump_path) diff --git a/lldb/test/API/functionalities/stats_api/minidump.yaml b/lldb/test/API/functionalities/stats_api/minidump.yaml new file mode 100644 index 0000000000000..d04ca1ae0dc12 --- /dev/null +++ b/lldb/test/API/functionalities/stats_api/minidump.yaml @@ -0,0 +1,38 @@ +--- !minidump +Streams: + - Type: SystemInfo + Processor Arch: AMD64 + Processor Level: 6 + Processor Revision: 15876 + Number of Processors: 40 + Platform ID: Linux + CSD Version: 'Linux 3.13.0-91-generic' + CPU: + Vendor ID: GenuineIntel + Version Info: 0x00000000 + Feature Info: 0x00000000 + - Type: ThreadList + Threads: + - Thread Id: 0x2896BB + Context: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700100000000000FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B040A812FF7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050D0A75BBA7F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + Stack: + Start of Memory Range: 0x0 + Content: '' + - Type: Memory64List + Memory Ranges: + - Start of Memory Range: 0x1000 + Data Size: 0x100 + Content : '' + - Start of Memory Range: 0x2000 + Data Size: 0x20 + Content : '' + - Start of Memory Range: 0x3000 + Data Size: 0x400 + Content : '' + - Start of Memory Range: 0x5000 + Data Size: 0x500 + Content : '' + - Start of Memory Range: 0x5500 + Data Size: 0x500 + Content : '' +...