""" Test that breakpoints set on a bad address say they are bad. """ import lldb import lldbsuite.test.lldbutil as lldbutil from lldbsuite.test.lldbtest import * class BadAddressBreakpointTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True def test_bad_address_breakpoints(self): """Test that breakpoints set on a bad address say they are bad.""" self.build() self.address_breakpoints() def address_breakpoints(self): """Test that breakpoints set on a bad address say they are bad.""" target, process, thread, bkpt = lldbutil.run_to_source_breakpoint( self, "Set a breakpoint here", lldb.SBFileSpec("main.c") ) # illegal_address will hold (optionally) an address that, if # used as a breakpoint, will generate an unresolved breakpoint. illegal_address = None # Walk through all the memory regions in the process and # find an address that is invalid. regions = process.GetMemoryRegions() for region_idx in range(regions.GetSize()): region = lldb.SBMemoryRegionInfo() regions.GetMemoryRegionAtIndex(region_idx, region) if illegal_address is None or region.GetRegionEnd() > illegal_address: illegal_address = region.GetRegionEnd() if illegal_address is not None: # Now, set a breakpoint at the address we know is illegal. bkpt = target.BreakpointCreateByAddress(illegal_address) # Verify that breakpoint is not resolved. for bp_loc in bkpt: self.assertFalse(bp_loc.IsResolved()) else: self.fail( "Could not find an illegal address at which to set a bad breakpoint." )