概述
操作系统实验使用的是清华大学的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?