[Lldb-commits] [lldb] r314958 - Another silly little thing you can do with Python commands.

Jim Ingham via lldb-commits lldb-commits at lists.llvm.org
Wed Oct 4 17:49:49 PDT 2017

Author: jingham
Date: Wed Oct  4 17:49:49 2017
New Revision: 314958

URL: http://llvm.org/viewvc/llvm-project?rev=314958&view=rev
Another silly little thing you can do with Python commands.

Sometimes you want to step along and print a local each time as you go.
You can do that with stop hooks, but that's a little heavy-weight.  This
is a sketch of a command that steps and then does "frame variable" on all
its arguments.


Added: lldb/trunk/examples/python/step_and_print.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/examples/python/step_and_print.py?rev=314958&view=auto
--- lldb/trunk/examples/python/step_and_print.py (added)
+++ lldb/trunk/examples/python/step_and_print.py Wed Oct  4 17:49:49 2017
@@ -0,0 +1,24 @@
+""" Does a step-over then prints the local variables or only the ones passed in """
+import lldb
+class StepAndPrint:
+    def __init__(self, debugger, unused):
+        return
+    def __call__(self, debugger, command, exe_ctx, result):
+        # Set the command to synchronous so the step will complete
+        # before we try to run the frame variable.
+        old_async = debugger.GetAsync()
+        debugger.SetAsync(False)
+        debugger.HandleCommand("thread step-over")
+        print("---------- Values: -------------------\n")
+        debugger.HandleCommand("frame variable %s"%(command))
+        debugger.SetAsync(old_async)
+    def get_short_help(self):
+        return "Does a step-over then runs frame variable passing the command args to it\n"
+def __lldb_init_module(debugger, unused):
+    debugger.HandleCommand("command script add -c step_and_print.StepAndPrint sap")

More information about the lldb-commits mailing list