学习OpenCV(蝴蝶书/C++)相关——2.MacOS下使用VSCode调试cpp程序

之前在 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": []
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
这个错误提示表明在编译C++代码时,尝试包含OpenCV 4库中的opencv2/opencv.hpp头文件,但是系统找不到指定的文件或路径。这可能是由于以下几个原因: 1. **路径问题**:OpenCV库可能没有正确安装到你的系统路径中,或者你试图包含的头文件所在的路径不正确。检查你的OpenCV安装路径,以及`#include`指令的路径是否指向了正确的目录。 2. **头文件版本**:如果你正在使用的是OpenCV 4,但编译器仍然在寻找OpenCV 3的头文件,那么你需要更新编译命令,确保它指向的是最新版本的头文件。 3. **预处理器定义**:在某些情况下,编译器可能需要特定的预处理器宏(如`OPENCV_VERSION`)来正确识别OpenCV库。确保你在编译前设置了这些定义。 4. **项目配置**:如果你在IDE中编译,检查项目设置是否正确配置了OpenCV库的路径和依赖。 为了解决这个问题,你可以按照以下步骤操作: - **确认路径**:检查`opencv4/opencv2/opencv.hpp`的确切位置,并确保`#include`指令中的路径正确。 - **更新编译命令**:如果头文件已移动,更新你的`#include`指令。 - **添加头文件路径**:在编译选项中添加OpenCV库的包含路径,特别是对于跨目录引用。 - **检查项目配置**:在IDE中,检查并调整项目的库和编译设置。 相关问题: 1. 如何在编译器中指定头文件搜索路径? 2. 如何在不同版本的OpenCV之间正确配置预处理器宏? 3. 如果我是在Linux上遇到这个问题,应该如何检查OpenCV的安装路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值