以linux上的g++为例吧,如果用的是别的操作系统、编译器(例如Windows上的MinGW)也可以往下看,对默认生成的json文件进行相应的修改就行,也是加那几行。
首先vscode默认会生成一个这样的launch.json配置文件内容。
选择右下方的添加配置,再选择gdb启动这项:
会自动生成一串json,如下:
然后对其进行修改,改成这样:
可以看到改了三个地方:
修改一
"program": "输入程序名称,例如 ${workspaceFolder}/a.out",
改为
"program": "${workspaceFolder}/${fileBasenameNoExtension}",
这是修改调试目标,即生成的可执行文件名。
修改二
"setupCommands"里加了一段:
效果:防止 gdb 打开标准库函数。
修改三
添加了这一段
symbolLoadInfo意为对符号加载的显式控制。
如果loadAll为 true,则将加载所有 lib 的符号;否则不加载任何 so/lib 符号。默认值为 true。
"preLaunchTask"是点击调试g++前进行的步骤,应和task.json里的任务名一致(如下图),如果没有这一行,则只能调试已存在的可执行文件。
完成这些配置后,VScode单步调试C++就可以不进入标准库、系统库了。