根据上一篇文章的步骤,可以在终端输出"hello world"
现在我们使用工具gdb-multiarch单步调试程序
安装
sudo apt install gdb-multiarch
编译
$ make
rm -rf build *.img kernel.map
mkdir -p build
riscv64-linux-gnu-gcc -g -Wall -nostdlib -Iinclude -MMD -c src/start.c -o build/start_c.o
riscv64-linux-gnu-gcc -g -Iinclude -MMD -c -D__ASSEMBLY__ src/startup.S -o build/startup_s.o
riscv64-linux-gnu-ld -T src/linker.ld -Map kernel.map -o build/kernel.elf build/start_c.o build/startup_s.o
riscv64-linux-gnu-objcopy build/kernel.elf -O binary kernel.img
enter debug mode
另外打开一个终端,进入代码目录
cd risc-v-bm/
进入调试模式
$ gdb-multiarch --tui ./build/kernel.elf
连接
(gdb) target remote :1234
打上断点 b _start
(gdb) b _start
Breakpoint 1 at 0x80000000: file src/startup.S, line 5.
继续执行 continue
(gdb) continue
Continuing.
Breakpoint 1, _text_boot () at src/startup.S:5
显示所有regs
(gdb) layout regs
现在就是可以使用step命令单步查看每个寄存器的变化
由于上面寄存器没有显示完整,
可以使用命令 i r regs_name来查看某个寄存器的值。
(gdb) i r s4
s4 0x72 114
(gdb) i r s2
s2 0x80001009 2147487753
i r 则显示所有寄存器的值