一阶段学习参考
转:Learn Rust the Dangerous Way-系列文章翻译-总述 - 掘金,这系列文章总结了rust改写c语言 ,非常经典
在学习os开发的时候如何使我们能够愉快的开始学习,而不在配置环境折腾的时间太长,以下是我的实践。
我的系统是windows11,上边安装了dockerdesktop.
1. docker 容器
1 | 检出源码 |
docker 镜像

开发容器

2. dev container 开发环境
2.1 安装vscode 及其插件
为了支持docker dev container 需要安装以下插件

点击以下红色标识位置连接到dev container

然后打开/mnt/ 目录下的项目文件夹

2.2 安装调试插件

3. 在vscode 中支持远程调试
3.1 在容器os1 内编译 gdb
1 | ```shell |
3.2 使编译的os文件支持调试信息
以rcore ch3 为例
1 | 1. os/Makefile 文件中 修改和添加以下内容 |
用以下命令确定os文件支持调试
1 | root@os1:/mnt/2024s-rcore-xuejianxinokok/os/target/riscv64gc-unknown-none-elf/debug# file os |
这时我们就可以在 容器内的命令行进行调试了,但这样还是不太方便
进入gbd 后
先回车后 ,然后再输入 b rust_main
1 | b rust_main |
再输入 c


3.3 配置vscode 调试
虽然我们就可以在命令行进行调试了,但这样还是不太方便,我们接着配置vscode中的调试
按F5 启动调试添加 .vscode/launch.json
1 | { |
在另一个终端窗口启动 make gdbserver
在vscode 启动调试




为了每次按F5 时能够自动打开gbdserver
需要在 .vscode/launch.json配置一个preLaunchTask
1 | { |
在.vscode/tasks.json
1 | { |
为了能使 gdbserver在后台运行,os/Makefile,在命令结尾-s -S 后边添加了 &
,否则阻塞client启动
1 | gdbserver: build |
有时候gdbserver 没有被杀死导致启动不了,需要找到进程然后手动kill
1 | root@os1:/mnt/2024s-rcore-xuejianxinokok/os# lsof -i:1234 |
这样就可以愉快的调试了。
路漫漫…
感谢训练营的老师们!!!