Linux kernel通过gdb 在vsc debug vmlinux,使用这三个插件似乎都不行:
Beyond的GDB Debug、KGDB、Native Debug
只有微软自己开发的C/C++插件提供的才可以
C/C++ debug在调试窗口调试kernel 需要依赖cppdbg的type,但是初次使用通过图中添加配置看不到标注2的这几个选项。之后后面的GDB:Attach to PID(这个是GDB Debug的,type是gdb)
问题现象:
如何解决?
需要三步才能能自动解决这个问题,估计是vsc默认没有激活该功能。
第一步:拷贝下面这段到launch.json中
{
"name": "C++ Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.out",
"args": ["arg1", "arg2"],
"environment": [{ "name": "config", "value": "Debug" }],
"cwd": "${workspaceFolder}"
}
参考:https://code.visualstudio.com/docs/cpp/launch-json-reference
第二步:点击运行调试中的选择刚刚添加的这个配置 然后点击绿色三角形 运行
第三步:点击运行后报错直接忽略,然后点击添加配置就能看到cppdbg类型的自动添加配置了
分析原理:
这里点击添加配置,实际上是vscode的 快捷键的 代码片段 自动补全的功能,然后其他插件注册到这个快捷输入后,点击添加配置就会自动根据输入补全需要的这些。本质就是一个 代码片段功能 替换只是字符串比较长。
分析原理的来源:红色部分是我加的自定义代码片段,点击添加配置后也出现在了这里
也就是说cppdbg是vsc自带的或者说c/c++插件的。然后需要激活。
根据官网介绍应该是自带的:https://code.visualstudio.com/docs/cpp/launch-json-reference
PS:
实验了一个新环境没有安装c/c++插件,报错没有cppdbg类型,安装了c/c++插件就可以了。说明cppdbg就是c/c++插件的。
报错: