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 NO_DEBUG_INFO_TESTCASE = True 1399451b44SJordan Rupprecht 1499451b44SJordan Rupprecht def test_breakpoint_is_valid(self): 1599451b44SJordan Rupprecht """Make sure that if an SBBreakpoint gets deleted its IsValid returns false.""" 1699451b44SJordan Rupprecht self.build() 1799451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 1899451b44SJordan Rupprecht 1999451b44SJordan Rupprecht # Create a target by the debugger. 2099451b44SJordan Rupprecht target = self.dbg.CreateTarget(exe) 2199451b44SJordan Rupprecht self.assertTrue(target, VALID_TARGET) 2299451b44SJordan Rupprecht 2399451b44SJordan Rupprecht # Now create a breakpoint on main.c by name 'AFunction'. 2499451b44SJordan Rupprecht breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') 25b321b429SJonas Devlieghere self.trace("breakpoint:", breakpoint) 2699451b44SJordan Rupprecht self.assertTrue(breakpoint and 2799451b44SJordan Rupprecht breakpoint.GetNumLocations() == 1, 2899451b44SJordan Rupprecht VALID_BREAKPOINT) 2999451b44SJordan Rupprecht 3099451b44SJordan Rupprecht # Now delete it: 3199451b44SJordan Rupprecht did_delete = target.BreakpointDelete(breakpoint.GetID()) 3299451b44SJordan Rupprecht self.assertTrue( 3399451b44SJordan Rupprecht did_delete, 3499451b44SJordan Rupprecht "Did delete the breakpoint we just created.") 3599451b44SJordan Rupprecht 3699451b44SJordan Rupprecht # Make sure we can't find it: 3799451b44SJordan Rupprecht del_bkpt = target.FindBreakpointByID(breakpoint.GetID()) 3899451b44SJordan Rupprecht self.assertTrue(not del_bkpt, "We did delete the breakpoint.") 3999451b44SJordan Rupprecht 4099451b44SJordan Rupprecht # Finally make sure the original breakpoint is no longer valid. 4199451b44SJordan Rupprecht self.assertTrue( 4299451b44SJordan Rupprecht not breakpoint, 4399451b44SJordan Rupprecht "Breakpoint we deleted is no longer valid.") 4499451b44SJordan Rupprecht 4599451b44SJordan Rupprecht def test_target_delete(self): 4699451b44SJordan Rupprecht """Make sure that if an SBTarget gets deleted the associated 4799451b44SJordan Rupprecht Breakpoint's IsValid returns false.""" 4899451b44SJordan Rupprecht 4999451b44SJordan Rupprecht self.build() 5099451b44SJordan Rupprecht exe = self.getBuildArtifact("a.out") 5199451b44SJordan Rupprecht 5299451b44SJordan Rupprecht # Create a target by the debugger. 5399451b44SJordan Rupprecht target = self.dbg.CreateTarget(exe) 5499451b44SJordan Rupprecht self.assertTrue(target, VALID_TARGET) 5599451b44SJordan Rupprecht 5699451b44SJordan Rupprecht # Now create a breakpoint on main.c by name 'AFunction'. 5799451b44SJordan Rupprecht breakpoint = target.BreakpointCreateByName('AFunction', 'a.out') 58b321b429SJonas Devlieghere self.trace("breakpoint:", breakpoint) 5999451b44SJordan Rupprecht self.assertTrue(breakpoint and 6099451b44SJordan Rupprecht breakpoint.GetNumLocations() == 1, 6199451b44SJordan Rupprecht VALID_BREAKPOINT) 6299451b44SJordan Rupprecht location = breakpoint.GetLocationAtIndex(0) 6399451b44SJordan Rupprecht self.assertTrue(location.IsValid()) 6499451b44SJordan Rupprecht 65*6754caa9SJim Ingham # Make sure the breakpoint's target is right: 66*6754caa9SJim Ingham self.assertEqual(target, breakpoint.GetTarget(), "Breakpoint reports its target correctly") 67*6754caa9SJim Ingham 6899451b44SJordan Rupprecht self.assertTrue(self.dbg.DeleteTarget(target)) 6999451b44SJordan Rupprecht self.assertFalse(breakpoint.IsValid()) 7099451b44SJordan Rupprecht self.assertFalse(location.IsValid()) 71