72 lines · python
1"""2Test SBBreakpoint APIs.3"""4 5import lldb6from lldbsuite.test.decorators import *7from lldbsuite.test.lldbtest import *8from lldbsuite.test import lldbutil9 10 11class BreakpointAPITestCase(TestBase):12 NO_DEBUG_INFO_TESTCASE = True13 14 def test_breakpoint_is_valid(self):15 """Make sure that if an SBBreakpoint gets deleted its IsValid returns false."""16 self.build()17 exe = self.getBuildArtifact("a.out")18 19 # Create a target by the debugger.20 target = self.dbg.CreateTarget(exe)21 self.assertTrue(target, VALID_TARGET)22 23 # Now create a breakpoint on main.c by name 'AFunction'.24 breakpoint = target.BreakpointCreateByName("AFunction", "a.out")25 self.trace("breakpoint:", breakpoint)26 self.assertTrue(27 breakpoint and breakpoint.GetNumLocations() == 1, VALID_BREAKPOINT28 )29 30 # Now delete it:31 did_delete = target.BreakpointDelete(breakpoint.GetID())32 self.assertTrue(did_delete, "Did delete the breakpoint we just created.")33 34 # Make sure we can't find it:35 del_bkpt = target.FindBreakpointByID(breakpoint.GetID())36 self.assertTrue(not del_bkpt, "We did delete the breakpoint.")37 38 # Finally make sure the original breakpoint is no longer valid.39 self.assertTrue(not breakpoint, "Breakpoint we deleted is no longer valid.")40 41 def test_target_delete(self):42 """Make sure that if an SBTarget gets deleted the associated43 Breakpoint's IsValid returns false."""44 45 self.build()46 exe = self.getBuildArtifact("a.out")47 48 # Create a target by the debugger.49 target = self.dbg.CreateTarget(exe)50 self.assertTrue(target, VALID_TARGET)51 52 # Now create a breakpoint on main.c by name 'AFunction'.53 breakpoint = target.BreakpointCreateByName("AFunction", "a.out")54 self.trace("breakpoint:", breakpoint)55 self.assertTrue(56 breakpoint and breakpoint.GetNumLocations() == 1, VALID_BREAKPOINT57 )58 location = breakpoint.GetLocationAtIndex(0)59 self.assertTrue(location.IsValid())60 61 # Test negative index access.62 self.assertTrue(breakpoint.location[-1].IsValid())63 64 # Make sure the breakpoint's target is right:65 self.assertEqual(66 target, breakpoint.GetTarget(), "Breakpoint reports its target correctly"67 )68 69 self.assertTrue(self.dbg.DeleteTarget(target))70 self.assertFalse(breakpoint.IsValid())71 self.assertFalse(location.IsValid())72