199451b44SJordan Rupprecht""" 299451b44SJordan RupprechtTest SBBreakpoint APIs. 399451b44SJordan Rupprecht""" 499451b44SJordan Rupprecht 599451b44SJordan Rupprechtimport lldb 699451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 799451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 899451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 999451b44SJordan Rupprecht 1099451b44SJordan Rupprecht 1199451b44SJordan Rupprechtclass BreakpointAPITestCase(TestBase): 1299451b44SJordan Rupprecht 1399451b44SJordan Rupprecht mydir = TestBase.compute_mydir(__file__) 1499451b44SJordan Rupprecht NO_DEBUG_INFO_TESTCASE = True 1599451b44SJordan Rupprecht 1699451b44SJordan Rupprecht @add_test_categories(['pyapi']) 1799451b44SJordan Rupprecht def test_breakpoint_is_valid(self): 1899451b44SJordan Rupprecht """Make sure that if an SBBreakpoint gets deleted its IsValid returns false.""" 1999451b44SJordan Rupprecht self.build() 2099451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 2199451b44SJordan Rupprecht 2299451b44SJordan Rupprecht # Create a target by the debugger. 2399451b44SJordan Rupprecht target = self.dbg.CreateTarget(exe) 2499451b44SJordan Rupprecht self.assertTrue(target, VALID_TARGET) 2599451b44SJordan Rupprecht 2699451b44SJordan Rupprecht # Now create a breakpoint on main.c by name 'AFunction'. 2799451b44SJordan Rupprecht breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') 28*b321b429SJonas Devlieghere self.trace("breakpoint:", breakpoint) 2999451b44SJordan Rupprecht self.assertTrue(breakpoint and 3099451b44SJordan Rupprecht breakpoint.GetNumLocations() == 1, 3199451b44SJordan Rupprecht VALID_BREAKPOINT) 3299451b44SJordan Rupprecht 3399451b44SJordan Rupprecht # Now delete it: 3499451b44SJordan Rupprecht did_delete = target.BreakpointDelete(breakpoint.GetID()) 3599451b44SJordan Rupprecht self.assertTrue( 3699451b44SJordan Rupprecht did_delete, 3799451b44SJordan Rupprecht "Did delete the breakpoint we just created.") 3899451b44SJordan Rupprecht 3999451b44SJordan Rupprecht # Make sure we can't find it: 4099451b44SJordan Rupprecht del_bkpt = target.FindBreakpointByID(breakpoint.GetID()) 4199451b44SJordan Rupprecht self.assertTrue(not del_bkpt, "We did delete the breakpoint.") 4299451b44SJordan Rupprecht 4399451b44SJordan Rupprecht # Finally make sure the original breakpoint is no longer valid. 4499451b44SJordan Rupprecht self.assertTrue( 4599451b44SJordan Rupprecht not breakpoint, 4699451b44SJordan Rupprecht "Breakpoint we deleted is no longer valid.") 4799451b44SJordan Rupprecht 4899451b44SJordan Rupprecht @add_test_categories(['pyapi']) 4999451b44SJordan Rupprecht def test_target_delete(self): 5099451b44SJordan Rupprecht """Make sure that if an SBTarget gets deleted the associated 5199451b44SJordan Rupprecht Breakpoint's IsValid returns false.""" 5299451b44SJordan Rupprecht 5399451b44SJordan Rupprecht self.build() 5499451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 5599451b44SJordan Rupprecht 5699451b44SJordan Rupprecht # Create a target by the debugger. 5799451b44SJordan Rupprecht target = self.dbg.CreateTarget(exe) 5899451b44SJordan Rupprecht self.assertTrue(target, VALID_TARGET) 5999451b44SJordan Rupprecht 6099451b44SJordan Rupprecht # Now create a breakpoint on main.c by name 'AFunction'. 6199451b44SJordan Rupprecht breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') 62*b321b429SJonas Devlieghere self.trace("breakpoint:", breakpoint) 6399451b44SJordan Rupprecht self.assertTrue(breakpoint and 6499451b44SJordan Rupprecht breakpoint.GetNumLocations() == 1, 6599451b44SJordan Rupprecht VALID_BREAKPOINT) 6699451b44SJordan Rupprecht location = breakpoint.GetLocationAtIndex(0) 6799451b44SJordan Rupprecht self.assertTrue(location.IsValid()) 6899451b44SJordan Rupprecht 6999451b44SJordan Rupprecht self.assertTrue(self.dbg.DeleteTarget(target)) 7099451b44SJordan Rupprecht self.assertFalse(breakpoint.IsValid()) 7199451b44SJordan Rupprecht self.assertFalse(location.IsValid()) 72