以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++就可以不进入标准库、系统库了。