From 845dee36ba4161df153ba05009cea615e20eda5a Mon Sep 17 00:00:00 2001 From: jimingham Date: Wed, 3 Jul 2024 10:45:20 -0700 Subject: SBThread::StepInstruction shouldn't discard other plans (#97493) This was just a typo, none of the external execution control functions should discard other plans. In particular, it means if you stop in a hand-called function and step an instruction, the function call thread plan gets unshipped, popping all the function call frames. I also added a test that asserts the correct behavior. I tested all the stepping operations even though only StepInstruction was wrong. --- lldb/test/API/python_api/thread/main.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'lldb/test/API/python_api/thread/main.cpp') diff --git a/lldb/test/API/python_api/thread/main.cpp b/lldb/test/API/python_api/thread/main.cpp index dde740a1b6bf..d4b0ad2372c3 100644 --- a/lldb/test/API/python_api/thread/main.cpp +++ b/lldb/test/API/python_api/thread/main.cpp @@ -5,8 +5,18 @@ char my_char = 'u'; int my_int = 0; +void +call_me(bool should_spin) { + int counter = 0; + if (should_spin) { + while (1) + counter++; // Set a breakpoint in call_me + } +} + int main (int argc, char const *argv[]) { + call_me(false); for (int i = 0; i < 3; ++i) { printf("my_char='%c'\n", my_char); ++my_char; -- cgit v1.2.3