mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-22 13:05:52 -04:00

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
49 lines
2.1 KiB
Python
49 lines
2.1 KiB
Python
""" 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")
|