import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil class ThunkTest(TestBase): def test_step_through_thunk(self): self.build() lldbutil.run_to_name_breakpoint(self, "testit") # Make sure we step through the thunk into Derived1::doit self.expect( "step", STEP_IN_SUCCEEDED, substrs=["stop reason = step in", "Derived1::doit"], ) self.runCmd("continue") self.expect( "step", STEP_IN_SUCCEEDED, substrs=["stop reason = step in", "Derived2::doit"], ) @skipIfWindows def test_step_out_thunk(self): self.build() lldbutil.run_to_name_breakpoint(self, "testit_debug") # Make sure we step out of the thunk and end up in testit_debug. source = "main.cpp" line = line_number(source, "// Step here") self.expect( "step", STEP_IN_SUCCEEDED, substrs=["stop reason = step in", "{}:{}".format(source, line)], ) self.runCmd("continue") self.expect( "step", STEP_IN_SUCCEEDED, substrs=["stop reason = step in", "Derived2::doit_debug"], )