1061da546Spatrick""" Adds the 'toggle-disassembly' command to switch you into a disassembly only mode """ 2061da546Spatrickimport lldb 3061da546Spatrick 4061da546Spatrickclass DisassemblyMode: 5061da546Spatrick def __init__(self, debugger, unused): 6061da546Spatrick self.dbg = debugger 7061da546Spatrick self.interp = debugger.GetCommandInterpreter() 8061da546Spatrick self.store_state() 9061da546Spatrick self.mode_off = True 10061da546Spatrick 11061da546Spatrick def store_state(self): 12061da546Spatrick self.dis_count = self.get_string_value("stop-disassembly-count") 13061da546Spatrick self.dis_display = self.get_string_value("stop-disassembly-display") 14061da546Spatrick self.before_count = self.get_string_value("stop-line-count-before") 15061da546Spatrick self.after_count = self.get_string_value("stop-line-count-after") 16061da546Spatrick 17061da546Spatrick def get_string_value(self, setting): 18061da546Spatrick result = lldb.SBCommandReturnObject() 19061da546Spatrick self.interp.HandleCommand("settings show " + setting, result) 20061da546Spatrick value = result.GetOutput().split(" = ")[1].rstrip("\n") 21061da546Spatrick return value 22061da546Spatrick 23061da546Spatrick def set_value(self, setting, value): 24061da546Spatrick result = lldb.SBCommandReturnObject() 25061da546Spatrick self.interp.HandleCommand("settings set " + setting + " " + value, result) 26061da546Spatrick 27061da546Spatrick def __call__(self, debugger, command, exe_ctx, result): 28061da546Spatrick if self.mode_off: 29061da546Spatrick self.mode_off = False 30061da546Spatrick self.store_state() 31061da546Spatrick self.set_value("stop-disassembly-display","always") 32061da546Spatrick self.set_value("stop-disassembly-count", "8") 33061da546Spatrick self.set_value("stop-line-count-before", "0") 34061da546Spatrick self.set_value("stop-line-count-after", "0") 35061da546Spatrick result.AppendMessage("Disassembly mode on.") 36061da546Spatrick else: 37061da546Spatrick self.mode_off = True 38061da546Spatrick self.set_value("stop-disassembly-display",self.dis_display) 39061da546Spatrick self.set_value("stop-disassembly-count", self.dis_count) 40061da546Spatrick self.set_value("stop-line-count-before", self.before_count) 41061da546Spatrick self.set_value("stop-line-count-after", self.after_count) 42061da546Spatrick result.AppendMessage("Disassembly mode off.") 43061da546Spatrick 44061da546Spatrick def get_short_help(self): 45061da546Spatrick return "Toggles between a disassembly only mode and normal source mode\n" 46061da546Spatrick 47061da546Spatrickdef __lldb_init_module(debugger, unused): 48*f6aab3d8Srobert debugger.HandleCommand("command script add -o -c disassembly_mode.DisassemblyMode toggle-disassembly") 49