文章目录
之前在 mac下vscode配置c++环境用过简单的launch.json
的配置。
但是不足以支撑我这里调用OpenCV这些第三方库的调试,因此认真看了一下。
1. VScode中的调试
当不创建launch.json
,直接点击左侧运行和调试时,
在有CMakeFiles的情况下,可以看到输出信息如下:
其实还是先用cmake生成了debug模式的目标代码,同时也link了,其实就是生成了DisplayImage的可执行文件。
如果删除CMakeFiles,则输出信息如下:
其实是先调用clang++来生成可执行文件。
因此,VSCode中调试C++程序本质上还是先生成可执行文件,然后使用MacOS默认的调试器LLDB进行调试。
因此,需要使用launch.json对调试进行一些配置。
与gdb的调试过程是类似的,针对的都是debug模式下生成的可执行文件,详见:C++——linux下使用gcc或者cmake进行c++程序开发中3.1 常用调试命令参数 部分
2. 配置VSCode中C++的调试(以OpenCV为例)
在VSCode中,.launch
文件是用来配置debugger的,位于项目的.vscode
文件夹中。如果要启动调试过程,则必须把要调试的可执行文件的路径填入program
字段中。
2.1 创建适用于C++的.launch文件
按照上述图示的①②③分别点击,然后ctrl+S保存,就可以得到以下界面:
由于创建了一个.launch
配置文件,因此左上角是可以选择不同的.launch
配置文件。
2.2 常见参数说明
️表示必须参数
{
"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- 更多的暂时用不到,如果还有特别的需求,可以去这里看, Configure C/C++ debugging
另外,鼠标移动到字段上也会有字段说明的提示:
参考:
2.3 调试OpenCV的.launch文件示例
2.3.1 .launch文件demo
当前的文件结构
(base) ⇄ ↺ * * ~/Documents/DailyStudy/cpp/opencv_code tree -L 1
.
├── DisplayImage
├── DisplayImage.cpp
├── DisplayImageDebug //Debug模式的可执行文件
└── DisplayImageDebug.dSYM
使用的.launch
配置文件
{
"version": "0.2.0",
"configurations": [
{
"name": "OpenCV_Debug",
"type": "cppdbg",
"request": "launch",
"targetArchitecture": "x86_64",
"program": "${workspaceFolder}/DisplayImageDebug",
"args": [
"XXXX/opencv-4.8.0/samples/data/lena.jpg"
],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
文章评论