diff --git a/assets/debugging/jsix.elf-gdb.py b/assets/debugging/jsix.elf-gdb.py index c883396..3619827 100644 --- a/assets/debugging/jsix.elf-gdb.py +++ b/assets/debugging/jsix.elf-gdb.py @@ -16,10 +16,14 @@ class PrintStackCommand(gdb.Command): depth = int(args[1]) for i in range(depth-1, -1, -1): - offset = i * 8 - base_addr = gdb.parse_and_eval(base) - value = gdb.parse_and_eval(f"*(uint64_t*)({base} + {offset})") - print("{:016x} (+{:04x}): {:016x}".format(int(base_addr) + offset, offset, int(value))) + try: + offset = i * 8 + base_addr = gdb.parse_and_eval(base) + value = gdb.parse_and_eval(f"*(uint64_t*)({base} + {offset})") + print("{:016x} (+{:04x}): {:016x}".format(int(base_addr) + offset, offset, int(value))) + except Exception as e: + print(e) + continue class PrintBacktraceCommand(gdb.Command): @@ -29,13 +33,13 @@ class PrintBacktraceCommand(gdb.Command): def invoke(self, arg, from_tty): args = gdb.string_to_argv(arg) - frame = "$rbp" - if len(args) > 0: - frame = args[0] - depth = 30 + if len(args) > 0: + depth = int(args[0]) + + frame = "$rbp" if len(args) > 1: - depth = int(args[1]) + frame = args[1] for i in range(depth-1, -1, -1): ret = gdb.parse_and_eval(f"*(uint64_t*)({frame} + 8)")