[Lldb-commits] [lldb] r300902 - Add an example command to toggle between disassembly-only and source mode.

Jim Ingham via lldb-commits lldb-commits at lists.llvm.org
Thu Apr 20 14:51:27 PDT 2017


Author: jingham
Date: Thu Apr 20 16:51:27 2017
New Revision: 300902

URL: http://llvm.org/viewvc/llvm-project?rev=300902&view=rev
Log:
Add an example command to toggle between disassembly-only and source mode.

Sometimes you are debugging in source, but you really only want to see
the disassembly.  That's easy to do but you have to set a few variables.
This command toggles between your old values, and a disassembly only mode.

Added:
    lldb/trunk/examples/python/disassembly_mode.py

Added: lldb/trunk/examples/python/disassembly_mode.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/examples/python/disassembly_mode.py?rev=300902&view=auto
==============================================================================
--- lldb/trunk/examples/python/disassembly_mode.py (added)
+++ lldb/trunk/examples/python/disassembly_mode.py Thu Apr 20 16:51:27 2017
@@ -0,0 +1,48 @@
+""" Adds the 'toggle-disassembly' command to switch you into a disassembly only mode """
+import lldb
+
+class DisassemblyMode:
+    def __init__(self, debugger, unused):
+        self.dbg = debugger
+        self.interp = debugger.GetCommandInterpreter()
+        self.store_state()
+        self.mode_off = True
+        
+    def store_state(self):
+        self.dis_count = self.get_string_value("stop-disassembly-count")
+        self.dis_display = self.get_string_value("stop-disassembly-display")
+        self.before_count = self.get_string_value("stop-line-count-before")
+        self.after_count = self.get_string_value("stop-line-count-after")
+        
+    def get_string_value(self, setting):
+        result = lldb.SBCommandReturnObject()
+        self.interp.HandleCommand("settings show " + setting, result)
+        value = result.GetOutput().split(" = ")[1].rstrip("\n")
+        return value
+    
+    def set_value(self, setting, value):
+        result = lldb.SBCommandReturnObject()
+        self.interp.HandleCommand("settings set " + setting + " " + value, result)
+        
+    def __call__(self, debugger, command, exe_ctx, result):
+        if self.mode_off:
+            self.mode_off = False
+            self.store_state()
+            self.set_value("stop-disassembly-display","always")
+            self.set_value("stop-disassembly-count", "8")
+            self.set_value("stop-line-count-before", "0")
+            self.set_value("stop-line-count-after", "0")
+            result.AppendMessage("Disassembly mode on.")
+        else:
+            self.mode_off = True
+            self.set_value("stop-disassembly-display",self.dis_display)
+            self.set_value("stop-disassembly-count", self.dis_count)
+            self.set_value("stop-line-count-before", self.before_count)
+            self.set_value("stop-line-count-after", self.after_count)
+            result.AppendMessage("Disassembly mode off.")
+
+    def get_short_help(self):
+        return "Toggles between a disassembly only mode and normal source mode\n"
+
+def __lldb_init_module(debugger, unused):
+    debugger.HandleCommand("command script add -c disassembly_mode.DisassemblyMode toggle-disassembly")




More information about the lldb-commits mailing list