summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Ingham <jingham@apple.com>2017-04-20 21:51:27 +0000
committerJim Ingham <jingham@apple.com>2017-04-20 21:51:27 +0000
commitf77bb46dc09b97d475b0f6b725ad4fe76ff25326 (patch)
treea58827f126f93884519b553c7248f5ddfc426bdb
parentb9cb969d9ccc41922ff2185c8ba483efc19ccb23 (diff)
downloadbcm5719-llvm-f77bb46dc09b97d475b0f6b725ad4fe76ff25326.tar.gz
bcm5719-llvm-f77bb46dc09b97d475b0f6b725ad4fe76ff25326.zip
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. llvm-svn: 300902
-rw-r--r--lldb/examples/python/disassembly_mode.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/lldb/examples/python/disassembly_mode.py b/lldb/examples/python/disassembly_mode.py
new file mode 100644
index 00000000000..19647cc6555
--- /dev/null
+++ b/lldb/examples/python/disassembly_mode.py
@@ -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")
OpenPOWER on IntegriCloud