| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestWatchpointCount(TestBase): |
| NO_DEBUG_INFO_TESTCASE = True |
| |
| @skipIf( |
| oslist=["freebsd", "linux"], |
| archs=["arm", "aarch64"], |
| bugnumber="llvm.org/pr26031", |
| ) |
| def test_watchpoint_count(self): |
| self.build() |
| (_, process, thread, _) = lldbutil.run_to_source_breakpoint( |
| self, "patatino", lldb.SBFileSpec("main.c") |
| ) |
| frame = thread.GetFrameAtIndex(0) |
| first_var = frame.FindVariable("x1") |
| second_var = frame.FindVariable("x2") |
| |
| error = lldb.SBError() |
| first_watch = first_var.Watch(True, False, True, error) |
| if not error.Success(): |
| self.fail("Failed to make watchpoint for x1: %s" % (error.GetCString())) |
| |
| second_watch = second_var.Watch(True, False, True, error) |
| if not error.Success(): |
| self.fail("Failed to make watchpoint for x2: %s" % (error.GetCString())) |
| process.Continue() |
| |
| stop_reason = thread.GetStopReason() |
| self.assertStopReason( |
| stop_reason, lldb.eStopReasonWatchpoint, "watchpoint for x1 not hit" |
| ) |
| stop_reason_descr = thread.GetStopDescription(256) |
| self.assertEqual(stop_reason_descr, "watchpoint 1") |
| |
| process.Continue() |
| stop_reason = thread.GetStopReason() |
| self.assertStopReason( |
| stop_reason, lldb.eStopReasonWatchpoint, "watchpoint for x2 not hit" |
| ) |
| stop_reason_descr = thread.GetStopDescription(256) |
| self.assertEqual(stop_reason_descr, "watchpoint 2") |