feat: написал парсинг параметров для дебаггера
This commit is contained in:
@ -1,11 +1,29 @@
|
||||
from dpdebugger import Debugger, DbgDict
|
||||
"""
|
||||
Это очень грязное решение, но из-за страданий с пакетированием всех скриптов
|
||||
оказалось тупо проще засунуть дебаггер сразу в эту папку и не мучить себя
|
||||
"""
|
||||
|
||||
from typing import cast
|
||||
from dpdebugger import Debugger, DbgDict, DbgInstrDesc
|
||||
from argparse import ArgumentParser
|
||||
import json
|
||||
import dbg_tui
|
||||
|
||||
def parse_dbg(dbg_json_dict: dict) -> DbgDict:
|
||||
instr = dbg_json_dict["instructions"]
|
||||
print(instr)
|
||||
|
||||
"""
|
||||
При сериализации json всегда переводит ключи в формат строк и с этим
|
||||
ничего поделать нельзя. Но для работы отладчика мне нужно, чтобы
|
||||
ключами были числа, поэтому эта функция пытается привести к int
|
||||
все ключи, лежащие в "instructions"
|
||||
"""
|
||||
instrs: dict[str | str, DbgInstrDesc] = dbg_json_dict["instructions"]
|
||||
result: dict[int, DbgInstrDesc] = {
|
||||
int(k) : instrs[k] for k in instrs
|
||||
}
|
||||
dbg_copy = dbg_json_dict.copy()
|
||||
dbg_copy["instructions"] = result
|
||||
dbg_copy = cast(DbgDict, dbg_copy)
|
||||
return dbg_copy
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = ArgumentParser(
|
||||
@ -31,3 +49,9 @@ if __name__ == "__main__":
|
||||
mem = bytearray(f.read())
|
||||
with open(args.debug_file, 'r') as f:
|
||||
dbg_dict: DbgDict = parse_dbg(json.load(f))
|
||||
|
||||
dbg = Debugger(mem, dbg_dict)
|
||||
with open (dbg_dict["src"], 'r') as f:
|
||||
src = f.read()
|
||||
|
||||
dbg_tui.main(dbg, src)
|
||||
|
||||
Reference in New Issue
Block a user