import lldb import unittest from lldbsuite.test.lldbtest import * from lldbsuite.test.decorators import * from lldbsuite.test import lldbutil class TestReverseExecutionNotSupported(TestBase): NO_DEBUG_INFO_TESTCASE = True def test_reverse_execution_not_supported(self): self.build() exe = self.getBuildArtifact("a.out") target = self.dbg.CreateTarget(exe) self.assertTrue(target, VALID_TARGET) main_bkpt = target.BreakpointCreateByName("main", None) self.assertTrue(main_bkpt, VALID_BREAKPOINT) process = target.LaunchSimple(None, None, self.get_process_working_directory()) self.assertTrue(process, PROCESS_IS_VALID) # This will fail gracefully. status = process.ContinueInDirection(lldb.eRunReverse) self.assertFailure(status) # Where gdb-remote is used this starts with "error: gdb-remote" but on Windows it says "error: windows". self.assertTrue( status.GetCString().endswith( " does not support reverse execution of processes" ) ) self.assertSuccess(process.ContinueInDirection(lldb.eRunForward)) self.assertState(process.GetState(), lldb.eStateExited) self.assertEqual(process.GetExitStatus(), 0)