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