1""" 2Test SBBreakpoint APIs. 3""" 4 5import lldb 6from lldbsuite.test.decorators import * 7from lldbsuite.test.lldbtest import * 8from lldbsuite.test import lldbutil 9 10 11class BreakpointAPITestCase(TestBase): 12 NO_DEBUG_INFO_TESTCASE = True 13 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_BREAKPOINT 28 ) 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 associated 43 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_BREAKPOINT 57 ) 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