1.在终端启动QEMU虚拟机的gdbserver
$qemu-system-aarch64 -machine raspi4 -serial null -serial mon:stdio -nographic -kernel benos.bin -S -s
2.在另一个终端输入如下命令来启动gdbclient
$aarch64-linux-gnu-gdb –tui build/benos.elf
或
$gdb-multiarch –tui build/benos.elf
2.1 连接gdbserver
(gdb)target remote localhost:1234
2.2 打开寄存器窗口
(gdb)layout reg
2.3 加载符号表
2.3.1 运行地址=链接地址
可用以下命令显式加载,或者不加载:
(gdb)file build/benos.elf
2.3.2 运行地址≠链接地址
(1)查询段的虚拟地址,计算偏移量
(2)加载符号表
(gdb)add-symbol-file build/benos.elf 0x80030 -s .text.boot 0x80000 -s .rodata 0x803c8
Ø 运行地址的基地址:0x80000
Ø 0x80030:text段的起始地址
Ø 0x80000:text.boot段的起始地址
Ø 0x803c8:只读数据段的起始地址
2.4 设置断点,并运行到断点处
(gdb)b ldr_test1
(gdb)c
2.5 单步调试,观察寄存器变化
(gdb)s