概述
操作系统实验使用的是清华大学的uCore,而实验指导书使用的是命令行调试。由于内核是由C语言编写的,于是尝试使用VSCode调试内核代码。(调试boot还是得make debug
)
环境
Ubuntu 18.04,已根据指导书配置环境,并安装了VSCode
配置步骤
安装拓展
安装C/C++
拓展
PS:建议安装语言包,搜索Chinese
即可找到
修改Makefile
打开Makefile
,搜索debug:
,添加
1 | debug-nogdb: $(UCOREIMG) |
PS:其实就是去掉了gdb自动附加的命令,因为要使用VSCode启动的gdb去附加
修改配置文件
launch.json
使用VSCode打开LABX文件夹(如LAB1),然后按下F5,选择C++(GDB/LLDB)
,将跳转到launch.json
文件
然后将
1 | "program": "输入程序名称,例如 ${workspaceFolder}/a.out", |
替换为
1 | "miDebuggerServerAddress": "localhost:1234", |
tasks.json
在.vscode
文件夹下创建tasks.json
文件,填入以下内容:
1 | { |
PS:将.vscode
文件夹复制到其他LAB下即可直接使用
下断点调试
在内核代码中下断点(如kern/init/init.c
),然后按下F5即可进行调试
(如果调试时报错,并且是语法错误,选择仍要调试
即可继续调试)
参考
ucore lab0 实验准备
使用 VSCode 运行 Task 并自动 Attach Debugger
How to make vscode not wait for finishing a preLaunchTask?