brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 2cc2b5f Raw
53 lines · python
1""" Adds the 'toggle-disassembly' command to switch you into a disassembly only mode """2import lldb3 4 5class DisassemblyMode:6    def __init__(self, debugger, unused):7        self.dbg = debugger8        self.interp = debugger.GetCommandInterpreter()9        self.store_state()10        self.mode_off = True11 12    def store_state(self):13        self.dis_count = self.get_string_value("stop-disassembly-count")14        self.dis_display = self.get_string_value("stop-disassembly-display")15        self.before_count = self.get_string_value("stop-line-count-before")16        self.after_count = self.get_string_value("stop-line-count-after")17 18    def get_string_value(self, setting):19        result = lldb.SBCommandReturnObject()20        self.interp.HandleCommand("settings show " + setting, result)21        value = result.GetOutput().split(" = ")[1].rstrip("\n")22        return value23 24    def set_value(self, setting, value):25        result = lldb.SBCommandReturnObject()26        self.interp.HandleCommand("settings set " + setting + " " + value, result)27 28    def __call__(self, debugger, command, exe_ctx, result):29        if self.mode_off:30            self.mode_off = False31            self.store_state()32            self.set_value("stop-disassembly-display", "always")33            self.set_value("stop-disassembly-count", "8")34            self.set_value("stop-line-count-before", "0")35            self.set_value("stop-line-count-after", "0")36            result.AppendMessage("Disassembly mode on.")37        else:38            self.mode_off = True39            self.set_value("stop-disassembly-display", self.dis_display)40            self.set_value("stop-disassembly-count", self.dis_count)41            self.set_value("stop-line-count-before", self.before_count)42            self.set_value("stop-line-count-after", self.after_count)43            result.AppendMessage("Disassembly mode off.")44 45    def get_short_help(self):46        return "Toggles between a disassembly only mode and normal source mode\n"47 48 49def __lldb_init_module(debugger, unused):50    debugger.HandleCommand(51        "command script add -o -c disassembly_mode.DisassemblyMode toggle-disassembly"52    )53