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(breakpoint and 27 breakpoint.GetNumLocations() == 1, 28 VALID_BREAKPOINT) 29 30 # Now delete it: 31 did_delete = target.BreakpointDelete(breakpoint.GetID()) 32 self.assertTrue( 33 did_delete, 34 "Did delete the breakpoint we just created.") 35 36 # Make sure we can't find it: 37 del_bkpt = target.FindBreakpointByID(breakpoint.GetID()) 38 self.assertTrue(not del_bkpt, "We did delete the breakpoint.") 39 40 # Finally make sure the original breakpoint is no longer valid. 41 self.assertTrue( 42 not breakpoint, 43 "Breakpoint we deleted is no longer valid.") 44 45 def test_target_delete(self): 46 """Make sure that if an SBTarget gets deleted the associated 47 Breakpoint's IsValid returns false.""" 48 49 self.build() 50 exe = self.getBuildArtifact("a.out") 51 52 # Create a target by the debugger. 53 target = self.dbg.CreateTarget(exe) 54 self.assertTrue(target, VALID_TARGET) 55 56 # Now create a breakpoint on main.c by name 'AFunction'. 57 breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') 58 self.trace("breakpoint:", breakpoint) 59 self.assertTrue(breakpoint and 60 breakpoint.GetNumLocations() == 1, 61 VALID_BREAKPOINT) 62 location = breakpoint.GetLocationAtIndex(0) 63 self.assertTrue(location.IsValid()) 64 65 # Make sure the breakpoint's target is right: 66 self.assertEqual(target, breakpoint.GetTarget(), "Breakpoint reports its target correctly") 67 68 self.assertTrue(self.dbg.DeleteTarget(target)) 69 self.assertFalse(breakpoint.IsValid()) 70 self.assertFalse(location.IsValid()) 71