之前在 mac下vscode配置c++环境用过简单的launch.json的配置。
但是不足以支撑我这里调用OpenCV这些第三方库的调试,因此认真看了一下。
当不创建launch.json,直接点击左侧运行和调试时,

在有CMakeFiles的情况下,可以看到输出信息如下:

其实还是先用cmake生成了debug模式的目标代码,同时也link了,其实就是生成了DisplayImage的可执行文件。
如果删除CMakeFiles,则输出信息如下:

其实是先调用clang++来生成可执行文件。
因此,VSCode中调试C++程序本质上还是先生成可执行文件,然后使用MacOS默认的调试器LLDB进行调试。
因此,需要使用launch.json对调试进行一些配置。
与gdb的调试过程是类似的,针对的都是debug模式下生成的可执行文件,详见:C++——linux下使用gcc或者cmake进行c++程序开发中3.1 常用调试命令参数 部分
在VSCode中,.launch文件是用来配置debugger的,位于项目的.vscode文件夹中。如果要启动调试过程,则必须把要调试的可执行文件的路径填入program字段中。

按照上述图示的①②③分别点击,然后ctrl+S保存,就可以得到以下界面:

由于创建了一个.launch配置文件,因此左上角是可以选择不同的.launch配置文件。
⭐️表示必须参数
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) 启动",
// 显示在界面上的当前`.launch`配置文件的名称,当有多个调试配置时,方便区分
"type": "cppdbg",
// 如果是Visual Studio Windows,则这个值为"cppvsdbg",
// 如果是GDB或者LLDB,则值就是"cppdbg"
// 当创建`.launch`文件时会默认给正确的值
"request": "launch",
⭐️"program": "输入程序名称,例如 ${workspaceFolder}/a.out",
// 指明可执行文件的完整路径,需要这个参数来加载debug symbols
//(只有debug模式下生成的可执行文件才有debug symbols)
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb"
}
]
}
additionalSOLibSearchPath,其他依赖的.so文件的搜索路径,如果有多个路径,用半角的分号分开,例如:“/Users/user/dir1;/Users/user/dir2”.targetArchitecture,这个参数在文档中显示是已经废弃了,会自动检测。(但是事实上,目前不明确这个参数,会报warning)${workspaceFolder} - the path of the folder opened in VS Code,一般推荐用这个${fileDirname} - the current opened file’s folder path另外,鼠标移动到字段上也会有字段说明的提示:

参考:
当前的文件结构
(base) ⇄ ↺ ✿ ♬ ~/Documents/DailyStudy/cpp/opencv_code tree -L 1
.
├── DisplayImage
├── DisplayImage.cpp
├── DisplayImageDebug //Debug模式的可执行文件
└── DisplayImageDebug.dSYM
使用的.launch配置文件
{
"version":