1""" 2Test that breakpoints set on a bad address say they are bad. 3""" 4 5 6import lldb 7import lldbsuite.test.lldbutil as lldbutil 8from lldbsuite.test.lldbtest import * 9 10 11class BadAddressBreakpointTestCase(TestBase): 12 NO_DEBUG_INFO_TESTCASE = True 13 14 def test_bad_address_breakpoints(self): 15 """Test that breakpoints set on a bad address say they are bad.""" 16 self.build() 17 self.address_breakpoints() 18 19 def address_breakpoints(self): 20 """Test that breakpoints set on a bad address say they are bad.""" 21 target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( 22 self, "Set a breakpoint here", lldb.SBFileSpec("main.c") 23 ) 24 25 # illegal_address will hold (optionally) an address that, if 26 # used as a breakpoint, will generate an unresolved breakpoint. 27 illegal_address = None 28 29 # Walk through all the memory regions in the process and 30 # find an address that is invalid. 31 regions = process.GetMemoryRegions() 32 for region_idx in range(regions.GetSize()): 33 region = lldb.SBMemoryRegionInfo() 34 regions.GetMemoryRegionAtIndex(region_idx, region) 35 if illegal_address is None or region.GetRegionEnd() > illegal_address: 36 illegal_address = region.GetRegionEnd() 37 38 if illegal_address is not None: 39 # Now, set a breakpoint at the address we know is illegal. 40 bkpt = target.BreakpointCreateByAddress(illegal_address) 41 # Verify that breakpoint is not resolved. 42 for bp_loc in bkpt: 43 self.assertFalse(bp_loc.IsResolved()) 44 else: 45 self.fail( 46 "Could not find an illegal address at which to set a bad breakpoint." 47 ) 48