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)查询段的虚拟地址,计算偏移量

QEMU树莓派4+GDB调试方法_加载

(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

 

QEMU树莓派4+GDB调试方法_gdb_02