[Lldb-commits] [lldb] 83263ae - Add HitCount into Breakpoint statistics
Jeffrey Tan via lldb-commits
lldb-commits at lists.llvm.org
Fri Mar 3 10:29:16 PST 2023
Author: Jeffrey Tan
Date: 2023-03-03T10:28:56-08:00
New Revision: 83263aeceb8e89709a5da417db753a02bb5a0fbd
URL: https://github.com/llvm/llvm-project/commit/83263aeceb8e89709a5da417db753a02bb5a0fbd
DIFF: https://github.com/llvm/llvm-project/commit/83263aeceb8e89709a5da417db753a02bb5a0fbd.diff
LOG: Add HitCount into Breakpoint statistics
Turns out breakpoint statistics is missing hitCount.
This patches adds the hitCount field.
Differential Revision: https://reviews.llvm.org/D145203
Added:
Modified:
lldb/source/Breakpoint/Breakpoint.cpp
lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
Removed:
################################################################################
diff --git a/lldb/source/Breakpoint/Breakpoint.cpp b/lldb/source/Breakpoint/Breakpoint.cpp
index aad01a2e6fb67..bdaf3c905d042 100644
--- a/lldb/source/Breakpoint/Breakpoint.cpp
+++ b/lldb/source/Breakpoint/Breakpoint.cpp
@@ -532,12 +532,12 @@ void Breakpoint::ModulesChanged(ModuleList &module_list, bool load,
locations_with_no_section.Add(break_loc_sp);
continue;
}
-
+
if (!break_loc_sp->IsEnabled())
continue;
-
+
SectionSP section_sp(section_addr.GetSection());
-
+
// If we don't have a Section, that means this location is a raw
// address that we haven't resolved to a section yet. So we'll have to
// look in all the new modules to resolve this location. Otherwise, if
@@ -554,9 +554,9 @@ void Breakpoint::ModulesChanged(ModuleList &module_list, bool load,
}
}
}
-
+
size_t num_to_delete = locations_with_no_section.GetSize();
-
+
for (size_t i = 0; i < num_to_delete; i++)
m_locations.RemoveLocation(locations_with_no_section.GetByIndex(i));
@@ -1132,12 +1132,13 @@ json::Value Breakpoint::GetStatistics() {
bp.try_emplace("resolveTime", m_resolve_time.get().count());
bp.try_emplace("numLocations", (int64_t)GetNumLocations());
bp.try_emplace("numResolvedLocations", (int64_t)GetNumResolvedLocations());
+ bp.try_emplace("hitCount", (int64_t)GetHitCount());
bp.try_emplace("internal", IsInternal());
if (!m_kind_description.empty())
bp.try_emplace("kindDescription", m_kind_description);
// Put the full structured data for reproducing this breakpoint in a key/value
// pair named "details". This allows the breakpoint's details to be visible
- // in the stats in case we need to reproduce a breakpoint that has long
+ // in the stats in case we need to reproduce a breakpoint that has long
// resolve times
StructuredData::ObjectSP bp_data_sp = SerializeToStructuredData();
if (bp_data_sp) {
diff --git a/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py b/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
index 36860ecb29482..95d2a633d24e5 100644
--- a/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
+++ b/lldb/test/API/functionalities/breakpoint/breakpoint_command/TestBreakpointCommand.py
@@ -423,7 +423,6 @@ def test_add_commands_by_breakpoint_name(self):
patterns=["bktptcmd.function"])
-
def test_breakpoint_delete_disabled(self):
"""Test 'break delete --disabled' works"""
self.build()
@@ -548,3 +547,26 @@ def test_breakpoints_auto_source_map_relative(self):
source_map_json = self.get_source_map_json()
self.assertEquals(len(source_map_json), 0, "source map should not be deduced")
+
+
+ def test_breakpoint_statistics_hitcount(self):
+ """Test breakpoints statistics have hitCount field."""
+ self.build()
+ target = self.createTestTarget()
+
+ lldbutil.run_break_set_by_file_and_line(
+ self, "main.c", self.line, num_expected_locations=1, loc_exact=True)
+
+ stream = lldb.SBStream()
+ res = target.GetStatistics().GetAsJSON(stream)
+ self.assertTrue(res.Success())
+ debug_stats = json.loads(stream.GetData())
+ self.assertEqual('targets' in debug_stats, True,
+ 'Make sure the "targets" key in in target.GetStatistics()')
+ target_stats = debug_stats['targets'][0]
+ self.assertNotEqual(target_stats, None)
+
+ breakpoints_stats = target_stats['breakpoints']
+ self.assertNotEqual(breakpoints_stats, None)
+ for breakpoint_stats in breakpoints_stats:
+ self.assertIn("hitCount", breakpoint_stats)
More information about the lldb-commits
mailing list