""" Test inferior restart when breakpoint is set on running target. """ import os import lldb from lldbsuite.test.lldbtest import * class BreakpointSetRestart(TestBase): mydir = TestBase.compute_mydir(__file__) BREAKPOINT_TEXT = 'Set a breakpoint here' def test_breakpoint_set_restart(self): self.build() cwd = os.getcwd() exe = os.path.join(cwd, 'a.out') target = self.dbg.CreateTarget(exe) self.assertTrue(target, VALID_TARGET) self.dbg.SetAsync(True) process = target.LaunchSimple( None, None, self.get_process_working_directory()) self.assertTrue(process, PROCESS_IS_VALID) event = lldb.SBEvent() # Wait for inferior to transition to running state while self.dbg.GetListener().WaitForEvent(2, event): if lldb.SBProcess.GetStateFromEvent(event) == lldb.eStateRunning: break bp = target.BreakpointCreateBySourceRegex( self.BREAKPOINT_TEXT, lldb.SBFileSpec( os.path.join( cwd, 'main.cpp'))) self.assertTrue( bp.IsValid() and bp.GetNumLocations() == 1, VALID_BREAKPOINT) while self.dbg.GetListener().WaitForEvent(2, event): if lldb.SBProcess.GetStateFromEvent( event) == lldb.eStateStopped and lldb.SBProcess.GetRestartedFromEvent(event): continue if lldb.SBProcess.GetStateFromEvent(event) == lldb.eStateRunning: continue self.fail( "Setting a breakpoint generated an unexpected event: %s" % lldb.SBDebugger.StateAsCString( lldb.SBProcess.GetStateFromEvent(event)))