RCore学习记录002
初次运行RCore和调试,这里使用的RCore代码是实验指导书的代码,而非RCore训练营的
讲两种方法,第一种是传统的gdb调试,在上一节中提到的riscv交叉编译工具链中的已经安装了riscv的gdb,另一种是基于CLion的可视化调试,虽然Rust的已经有了自己开发工具RustRover,但是调试的选项中并不存在远程调试,所以还是使用CLion加Rust插件的方式,另外,CLion有Linker脚本和汇编文件的高亮显示,这对于学习RCore这种操作系统开发是非常友好的
运行和调试
运行
-
在github的代码仓库https://github.com/rcore-os/rCore-Tutorial-v3拉下代码
git clone https://github.com/rcore-os/rCore-Tutorial-v3
-
进入代码文件夹,并切换分支到ch1
cd rCore-Tutorial-v3 git checkout ch1
-
进入os文件夹,运行
cd os make run
-
看到运行结果如图,表示运行成功
传统gdb调试
-
在os文件夹下先执行清理命令,再执行调试命令
make clean make debug
-
接着会打开调试窗口,回车,然后在rust_main打断点,再继续执行,看到如下图
-
若想继续执行,输入c即可直接执行完毕
基于CLion的可视化调试
-
用CLion打开RCore项目
-
增加远程调试,并按图中设置
调试器选择编译安装的riscv工具链中的gdb
符号文件是编译出的os可执行文件,而不是加载到qemu中的os.bin
sysroot就是os所在的文件夹
-
接着只需要打断点调试,先在os文件夹下执行命令
make gdbserver
可以开启gdb的远程调试
-
在CLion中点调试即可,如下图,在CLion中进行单步调试就可以了