当前位置: 首页 > news >正文

VSCode CMake调试CPP程序

文章目录

  • 1 安装C++与CMake插件
  • 2 配置CMakeLists.txt
  • 3 使用CMake编译调试
    • 3.1 编译
    • 3.2 调试
  • 4 自定义构建调试
  • 参考

1 安装C++与CMake插件

C++插件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

CMake插件

在这里插入图片描述

2 配置CMakeLists.txt

编写测试程序

#include<iostream>

int main(int argc, char const *argv[]) {
    int a = 1, b = 2;
    int c = a + b;
    int d = a - b;
    std::cout << "Done!" << std::endl;
    return 0;
}

编写构建脚本CMakeLists.txt

cmake_minimum_required(VERSION 3.12)
project(DebugProject)

add_executable(main.out main.cpp)

3 使用CMake编译调试

3.1 编译

Command + Shift + P 输入CMake 输入CMake: Configure 指定要构建的文件

在这里插入图片描述

进入CMake Tools插件,可以看到CMake中的各种命令

PROJECT OUTLINE中点击进行debug构建

在这里插入图片描述

3.2 调试

在编辑器中添加断点

在这里插入图片描述

进入CMake Tools插件,点击Debug按钮,开始调试

在这里插入图片描述

可以看到已经运行到断点处,因此可以继续进行调试

在这里插入图片描述

4 自定义构建调试

进入CMakeList.txt 所在的目录,编译并构建

cd CMakeLists.txt所在目录
cmake -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build

进入Debug并配置launch.json

在这里插入图片描述

选择调试器

在这里插入图片描述

生成调试配置

在这里插入图片描述

选择lldb(launch)

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "CMakeDebug", //自定义调试名称
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/main.out", // 指定生成main.out的路径
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",  // 表示使用当前文件所在的目录作为工作目录。
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb" // 调试器 使用gdb或者lldb
        }

    ]
}

可以自定义多个调试器,分别进行调试即可
【注意】C++程序修改后需要重新进行编译cmake --build build

在这里插入图片描述

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "CMakeTestDebug2",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/CPPNote/CH00_CPP/01_Debug/02/build/main.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb"
        },
        {
            "name": "CMakeTestDebug1",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/CPPNote/CH00_CPP/01_Debug/01/build/main.out",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb"
        }
    ]
}

参考

VSCode中配置CMake,通过CMake断点调试程序 https://blog.csdn.net/ly2467513805/article/details/106864342

相关文章:

  • 闲鱼分销玩法详解
  • 深入解读 React 纯组件(PureComponent)
  • 【Chain(链) 和 LCEL(LangChain Expression Language) 】概念区,用途差异对比
  • JavaScript学习教程,从入门到精通, JavaScript 函数全面解析与案例实践(11)
  • 浏览器与网络模块
  • 大模型——mcp-ui基于MCP协议的简洁AI聊天界面
  • Transformer模型的自注意机制原理、作用、优缺点,通俗易懂
  • qt mapFrom返回的QPoint和event->pos()区别和globalPos区别
  • Python爬虫第12节-解析库Beautiful Soup的使用下篇
  • AF3 ProteinDataset类的_get_masked_sequence方法解读
  • Linux Kernel 1
  • gazebo 启动卡死的解决方法汇总
  • transformers的 pipeline是什么:将模型加载、数据预处理、推理等步骤进行了封装
  • Linux下Docker安装超详细教程(以CentOS为例)
  • transformer 规范化层
  • Linux 进程基础(一):冯诺依曼结构
  • Java设计模式实战:策略模式在SimUDuck问题中的应用
  • 使用Fortran读取HDF5数据
  • 若依前后端分离版运行教程、打包教程、部署教程
  • Linux-内核驱动
  • 短视频网站怎么建设/湘潭网络推广
  • 东莞建设网企业沟通平台/太原seo网站优化
  • 今天的最新消息/合肥seo整站优化
  • 深圳网站建设公司 犀牛云 移动云网站/网页设计基础
  • 保定企业网站建设/黑帽seo培训
  • 存储网站建设/优帮云查询数据云查询