码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 学习OpenCV(蝴蝶书/C++)相关——2.MacOS下使用LLDB调试cpp程序


    文章目录

    • 1. VScode中的调试
    • 2. 配置VSCode中C++的调试(以OpenCV为例)
      • 2.1 创建适用于C++的.launch文件
      • 2.2 常见参数说明
      • 2.3 调试OpenCV的.launch文件示例
        • 2.3.1 .launch文件demo
        • 2.3.2 Debug模式的可执行文件
    • 3. 联合task.json文件一起使用
      • 3.1 创建tasks.json和launch.json文件
      • 3.2 tasks.json和launch.json示例
        • 3.2.1 clang++的
        • 3.2.2 CMake+Make的
      • 3.3 tasks.json文件和参数说明
        • 3.3.1 文件介绍
        • 3.3.2 参数说明
    • 4. VScode调试cout输出内容的显示位置
    • 5. c_cpp_properties.json文件

    之前在 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"
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 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

    另外,鼠标移动到字段上也会有字段说明的提示:
    在这里插入图片描述

    参考:

    • VSCode中一些预定义符号的含义-Variables Reference
    • Configure C/C++ debugging
    • LLDB 调试命令、插件和技巧(上)
    • lldb常用命令与调试技巧

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    使用的.launch配置文件

    {
       
        "version": 
    • 1
    • 2
  • 相关阅读:
    Maven3.9.1安装及环境变量配置
    iOS开发:浅尝辄止Runloop
    《研发效能(DevOps)工程师(中级)认证》证书查询方式和路径丨IDCF
    [附源码]SSM计算机毕业设计基于实时定位的超市配送业务管理JAVA
    银行家算法(避免死锁的算法)
    契约测试(中):利用PACT做契约测试
    Go语言学习笔记——Golang 1.18新特性工作区workspace
    天星金融(原小米金融)加强信息安全普及,预防电信诈骗案件
    「Qt中文教程指南」如何创建基于Qt Widget的应用程序(一)
    安卓应用开发——Android Studio中关于使用Androidstudio的注意事项
  • 原文地址:https://blog.csdn.net/Castlehe/article/details/134303774
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号