我已经使用 aarch64-none-elf-gdb 来调试在 qemu 上运行的 ARM 代码(全部在 MacOS Intel 上,但现在是 M3)有一段时间了。这有点不愉快,但可行。
然而,最近 gdb 一直在显示(显然)随机的寄存器组:有时是 x0-x22 和一些系统寄存器,有时是 x0-x30 和 SP 等,有时是很多系统寄存器,有时只有几个(而不是那些已经改变并且我需要)。
现在我正在使用 tui 模式,这基本上没问题 - 但有太多寄存器(并且我不想要的十进制值与十六进制值一起打印)。
有办法配置显示哪些寄存器吗?
例如,我想要(仅限十六进制):
x0-x30、SP、PC、ESR_EL1、ELR_EL1、FAR_EL1、CPSR、SPSR_EL1、CNTP_CVAL_EL0 等
但是不是:
ID_AA64ISAR5_EL1_RESERVED、VMPIDR_EL2 和大多数其他 207 系统寄存器!
看起来我需要修补 Qemu 代码,特别是:target/arm 中的文件。具体来说,gdbstub64.c中动态生成XML目标描述
这个问题的答案指明了道路...