| """ | |
| Test SBBreakpoint APIs. | |
| """ | |
| from __future__ import print_function | |
| import lldb | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class BreakpointAPITestCase(TestBase): | |
| mydir = TestBase.compute_mydir(__file__) | |
| NO_DEBUG_INFO_TESTCASE = True | |
| @add_test_categories(['pyapi']) | |
| def test_breakpoint_is_valid(self): | |
| """Make sure that if an SBBreakpoint gets deleted its IsValid returns false.""" | |
| self.build() | |
| exe = self.getBuildArtifact("a.out") | |
| # Create a target by the debugger. | |
| target = self.dbg.CreateTarget(exe) | |
| self.assertTrue(target, VALID_TARGET) | |
| # Now create a breakpoint on main.c by name 'AFunction'. | |
| breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') | |
| #print("breakpoint:", breakpoint) | |
| self.assertTrue(breakpoint and | |
| breakpoint.GetNumLocations() == 1, | |
| VALID_BREAKPOINT) | |
| # Now delete it: | |
| did_delete = target.BreakpointDelete(breakpoint.GetID()) | |
| self.assertTrue( | |
| did_delete, | |
| "Did delete the breakpoint we just created.") | |
| # Make sure we can't find it: | |
| del_bkpt = target.FindBreakpointByID(breakpoint.GetID()) | |
| self.assertTrue(not del_bkpt, "We did delete the breakpoint.") | |
| # Finally make sure the original breakpoint is no longer valid. | |
| self.assertTrue( | |
| not breakpoint, | |
| "Breakpoint we deleted is no longer valid.") | |
| @add_test_categories(['pyapi']) | |
| def test_target_delete(self): | |
| """Make sure that if an SBTarget gets deleted the associated | |
| Breakpoint's IsValid returns false.""" | |
| self.build() | |
| exe = self.getBuildArtifact("a.out") | |
| # Create a target by the debugger. | |
| target = self.dbg.CreateTarget(exe) | |
| self.assertTrue(target, VALID_TARGET) | |
| # Now create a breakpoint on main.c by name 'AFunction'. | |
| breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') | |
| #print("breakpoint:", breakpoint) | |
| self.assertTrue(breakpoint and | |
| breakpoint.GetNumLocations() == 1, | |
| VALID_BREAKPOINT) | |
| location = breakpoint.GetLocationAtIndex(0) | |
| self.assertTrue(location.IsValid()) | |
| self.assertTrue(self.dbg.DeleteTarget(target)) | |
| self.assertFalse(breakpoint.IsValid()) | |
| self.assertFalse(location.IsValid()) |