我们跑一个裸核程序,也就是不带操作系统的程序,然后使用gdb调试该程序。
首先编译目标程序,然后使用QEMU的kernel参数进行加载
bash
qemu-system-riscv64 -s -S -bios opensbi.elf -m 4G -smp 4 -kernel my_program.x -nographic
-s 让QEMU在1234端口侦听gdb的调试连接;
-S 表示启动后就挂起,等待 gdb 连接;
-bios 后面跟opensbi固件程序
-m 后面填写模拟内存大小
-smp 后面跟模拟CPU核心数
-kernel 后面跟要调试程序文件路径
-nographic 表示没有图像界面,只有命令行
然后启动gdb调试
bash
$ riscv64-unknown-elf-gdb
(gdb) file my_program.x
(gdb) target remote :1234
(gdb) c
target remote 表示连接远程调试,后面跟上远程地址和端口,本机可省略地址
注意:务必要使用riscv编译工具链里面的gdb