llunak updated this revision to Diff 225064.
llunak added a comment.
Removed the explicit test timeout.
Repository:
rLLDB LLDB
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68541/new/
https://reviews.llvm.org/D68541
Files:
lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/Makefile
lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/TestGuiBasicDebug.py
lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/func.c
lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/main.c
lldb/source/Core/IOHandler.cpp
Index: lldb/source/Core/IOHandler.cpp
===================================================================
--- lldb/source/Core/IOHandler.cpp
+++ lldb/source/Core/IOHandler.cpp
@@ -3771,6 +3771,8 @@
{'f', "Step out (finish)"},
{'s', "Step in (source line)"},
{'S', "Step in (single instruction)"},
+ {'u', "Frame up"},
+ {'d', "Frame down"},
{',', "Page up"},
{'.', "Page down"},
{'\0', nullptr}};
@@ -4384,6 +4386,26 @@
}
return eKeyHandled;
+ case 'u': // 'u' == frame up
+ case 'd': // 'd' == frame down
+ {
+ ExecutionContext exe_ctx =
+ m_debugger.GetCommandInterpreter().GetExecutionContext();
+ if (exe_ctx.HasThreadScope()) {
+ Thread* thread = exe_ctx.GetThreadPtr();
+ uint32_t frame_idx = thread->GetSelectedFrameIndex();
+ if (frame_idx == UINT32_MAX)
+ frame_idx = 0;
+ if( c == 'u' && frame_idx + 1 < thread->GetStackFrameCount())
+ ++frame_idx;
+ else if (c =='d' && frame_idx > 0)
+ --frame_idx;
+ if( thread->SetSelectedFrameByIndex( frame_idx, true ))
+ exe_ctx.SetFrameSP(thread->GetSelectedFrame());
+ }
+ }
+ return eKeyHandled;
+
case 'h':
window.CreateHelpSubwindow();
return eKeyHandled;
Index: lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/main.c
===================================================================
--- /dev/null
+++ lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/main.c
@@ -0,0 +1,7 @@
+extern int func();
+
+int main(int argc, char **argv) {
+ func(); // Break here
+ func(); // Second
+ return 0;
+}
Index: lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/func.c
===================================================================
--- /dev/null
+++ lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/func.c
@@ -0,0 +1,3 @@
+int func() {
+ return 1; // In function
+}
Index: lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/TestGuiBasicDebug.py
===================================================================
--- /dev/null
+++ lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/TestGuiBasicDebug.py
@@ -0,0 +1,45 @@
+"""
+Test the 'gui' shortcuts 's','n','f','u','d' (step in, step over, step out, up, down)
+"""
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test.lldbpexpect import PExpectTest
+
+class TestGuiBasicDebugCommandTest(PExpectTest):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ @skipIfCursesSupportMissing
+ def test_gui(self):
+ self.build()
+
+ self.launch(executable=self.getBuildArtifact("a.out"), dimensions=(100,500))
+ self.expect('br set -f main.c -p "// Break here"', substrs=["Breakpoint 1", "address ="])
+ self.expect("run", substrs=["stop reason ="])
+
+ escape_key = chr(27).encode()
+
+ # Start the GUI and close the welcome window.
+ self.child.sendline("gui")
+ self.child.send(escape_key)
+
+ # Simulate a simple debugging session.
+ # (Note: The order of responses depend on how lldb/curses print them,
+ # which is not necessarily the order on the screen.)
+ self.child.send("s") # step
+ self.child.expect_exact("return 1; // In function")
+ self.child.expect_exact("Thread 1: step in")
+ self.child.send("u") # up
+ self.child.expect_exact("func(); // Break here")
+ self.child.send("d") # down
+ self.child.expect_exact("return 1; // In function")
+ self.child.send("f") # finish
+ self.child.expect_exact("Thread 1: step out")
+ self.child.expect_exact("func(); // Second")
+ self.child.send("n") # step over
+ self.child.expect_exact("return 0;")
+ self.child.expect_exact("Thread 1: step over")
+
+ self.quit()
Index: lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/Makefile
===================================================================
--- /dev/null
+++ lldb/packages/Python/lldbsuite/test/commands/gui/basicdebug/Makefile
@@ -0,0 +1,2 @@
+C_SOURCES := main.c func.c
+include Makefile.rules
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits