[Lldb-commits] [PATCH] D134882: [lldb] Move breakpoint hit reset code to Target::CreateProcess
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Mon Oct 3 08:42:21 PDT 2022
labath updated this revision to Diff 464700.
labath added a comment.
use CleanupProcess instead
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134882/new/
https://reviews.llvm.org/D134882
Files:
lldb/source/Target/Process.cpp
lldb/source/Target/Target.cpp
lldb/test/API/functionalities/gdb_remote_client/TestProcessConnect.py
Index: lldb/test/API/functionalities/gdb_remote_client/TestProcessConnect.py
===================================================================
--- lldb/test/API/functionalities/gdb_remote_client/TestProcessConnect.py
+++ lldb/test/API/functionalities/gdb_remote_client/TestProcessConnect.py
@@ -63,3 +63,54 @@
self.dbg.GetSelectedTarget().GetProcess().Kill()
lldbutil.expect_state_changes(self, self.dbg.GetListener(),
self.process(), [lldb.eStateExited])
+ def test_breakpoint_count(self):
+ """
+ Test that breakpoint count gets reset for each new connection.
+ """
+ class MyResponder(MockGDBServerResponder):
+
+ def __init__(self):
+ super().__init__()
+ self.continued = False
+
+ def qfThreadInfo(self):
+ return "m47"
+
+ def qsThreadInfo(self):
+ return "l"
+
+ def setBreakpoint(self, packet):
+ return "OK"
+
+ def readRegister(self, reg):
+ # Pretend we're at the breakpoint after we've been resumed.
+ return "3412000000000000" if self.continued else "4747000000000000"
+
+ def cont(self):
+ self.continued = True
+ return "T05thread=47;reason:breakpoint"
+
+ # Connect to the first process and set our breakpoint.
+ self.server.responder = MyResponder()
+ target = self.createTarget("a.yaml")
+ process = self.connect(target)
+
+ bkpt = target.BreakpointCreateByAddress(0x1234)
+ self.assertTrue(bkpt.IsValid())
+ self.assertEqual(bkpt.GetNumLocations(), 1)
+
+ # "continue" the process. It should hit our breakpoint.
+ process.Continue()
+ self.assertState(process.GetState(), lldb.eStateStopped)
+ self.assertEqual(bkpt.GetHitCount(), 1)
+
+ # Now kill it, and connect again.
+ process.Kill()
+ self.server.stop()
+ self.server = MockGDBServer(self.server_socket_class())
+ self.server.start()
+
+ process = self.connect(target)
+
+ # The hit count should be reset.
+ self.assertEqual(bkpt.GetHitCount(), 0)
Index: lldb/source/Target/Target.cpp
===================================================================
--- lldb/source/Target/Target.cpp
+++ lldb/source/Target/Target.cpp
@@ -177,6 +177,7 @@
// clean up needs some help from the process.
m_breakpoint_list.ClearAllBreakpointSites();
m_internal_breakpoint_list.ClearAllBreakpointSites();
+ ResetBreakpointHitCounts();
// Disable watchpoints just on the debugger side.
std::unique_lock<std::recursive_mutex> lock;
this->GetWatchpointList().GetListMutex(lock);
Index: lldb/source/Target/Process.cpp
===================================================================
--- lldb/source/Target/Process.cpp
+++ lldb/source/Target/Process.cpp
@@ -2761,18 +2761,15 @@
}
Status Process::WillLaunch(Module *module) {
- GetTarget().ResetBreakpointHitCounts();
return DoWillLaunch(module);
}
Status Process::WillAttachToProcessWithID(lldb::pid_t pid) {
- GetTarget().ResetBreakpointHitCounts();
return DoWillAttachToProcessWithID(pid);
}
Status Process::WillAttachToProcessWithName(const char *process_name,
bool wait_for_launch) {
- GetTarget().ResetBreakpointHitCounts();
return DoWillAttachToProcessWithName(process_name, wait_for_launch);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D134882.464700.patch
Type: text/x-patch
Size: 3525 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20221003/6d3b12b8/attachment.bin>
More information about the lldb-commits
mailing list