在上一篇博客使用Qemu和GDB对Linux内核进行调试中已经介绍了使用Qemu和GDB对Linux内核进行调试的方法,但是GDB调试对于用惯了GUI工具的人(比如我)来说并不是很直观,所以就希望尝试使用比较熟悉的GUI编辑器,如VSCode,对内核进行调试。
由于VSCode的调试方式同样基于GDB,所以需要先在GDB中测试没有问题。
插件
需要在VSCode的插件市场中安装微软官方的C/C++插件,该插件可用于IntellSence和GDB调试。
配置
为了使VSCode支持内核的调试,需要配置launch.json,特备注意需要配置setupCommands
属性,以便在GDB启动后对其进行设置,大致的配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| { "version": "0.2.0", "configurations": [ { "name": "(gdb) linux", "type": "cppdbg", "request": "launch", "program": "${workspaceRoot}/vmlinux", "miDebuggerServerAddress": "localhost:1234", "args": [], "stopAtEntry": true, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerArgs": "-n", "targetArchitecture": "x64", "setupCommands": [ { "text": "set arch i386:x86-64:intel", "ignoreFailures": false }, { "text": "dir .", "ignoreFailures": false }, { "text": "add-auto-load-safe-path ./", "ignoreFailures": false }, { "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }
|
在添加配置后,直接在VSCode中设置断点,然后启动Qemu,最后在VSCode中启动调试即可。
其它配置
如果不仅需要使用VSCode对内核进行调试,还希望进行编辑,特别是激活IntelliSence以及格式化等功能,还需要对VSCode进行进一步的配置,具体配置已经置于GitHub仓库https://github.com/imaginezz/vscode_config_debug_kernel中,可以直接Clone为内核文件夹中的.vscode
目录。