llvm-project

Форк
0
/
disassembly_mode.py 
52 строки · 2.1 Кб
1
""" Adds the 'toggle-disassembly' command to switch you into a disassembly only mode """
2
import lldb
3

4

5
class DisassemblyMode:
6
    def __init__(self, debugger, unused):
7
        self.dbg = debugger
8
        self.interp = debugger.GetCommandInterpreter()
9
        self.store_state()
10
        self.mode_off = True
11

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 value
23

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 = False
31
            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 = True
39
            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

49
def __lldb_init_module(debugger, unused):
50
    debugger.HandleCommand(
51
        "command script add -o -c disassembly_mode.DisassemblyMode toggle-disassembly"
52
    )
53

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.