| 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) |