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
|
from argparse import ArgumentParser
|
||||||
import json
|
import json
|
||||||
|
import dbg_tui
|
||||||
|
|
||||||
def parse_dbg(dbg_json_dict: dict) -> DbgDict:
|
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__":
|
if __name__ == "__main__":
|
||||||
parser = ArgumentParser(
|
parser = ArgumentParser(
|
||||||
@ -31,3 +49,9 @@ if __name__ == "__main__":
|
|||||||
mem = bytearray(f.read())
|
mem = bytearray(f.read())
|
||||||
with open(args.debug_file, 'r') as f:
|
with open(args.debug_file, 'r') as f:
|
||||||
dbg_dict: DbgDict = parse_dbg(json.load(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