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

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

相关文章:

VSCode CMake调试CPP程序

文章目录 1 安装C与CMake插件2 配置CMakeLists.txt3 使用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;i…...

MySQL数据过滤、转换与标准化

数据处理是数据库操作的重要组成部分&#xff0c;尤其是在大量数据中查找、转换和规范化目标信息的过程中。为了确保数据的有效性与一致性&#xff0c;MySQL提供了一系列数据过滤、转换与标准化的功能。 本教程将深入探讨数据过滤和转换的基本方法及应用&#xff0c;内容涵盖数…...

Halo 设置 GitHub - OAuth2 认证指南

在当今数字化时代&#xff0c;用户认证的便捷性和安全性愈发重要。对于使用 Halo 搭建个人博客或网站的开发者而言&#xff0c;引入 GitHub - OAuth2 认证能够极大地提升用户登录体验。今天&#xff0c;我们就来详细探讨一下如何在 Halo 中设置 GitHub - OAuth2 认证。 一、为…...

【unity游戏开发——Animator动画】Animator动画状态机复用——重写动画控制器 Animator Override Controller

注意&#xff1a;考虑到UGUI的内容比较多&#xff0c;我将UGUI的内容分开&#xff0c;并全部整合放在【unity游戏开发——Animator动画】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、状态机复用是什么&#xff1f;二、实战专栏推荐完结 一、状态机复…...

C语言--汉诺塔问题

汉诺塔问题是一个典型的递归问题。 递归问题的基本思想&#xff1a;将问题逐步化简为相同思路但是规模更小的问题&#xff0c;直到问题可以直接解决 递归的关键在于基准情形和递归步骤&#xff0c;基准情形也就是退出条件&#xff0c;递归步骤也就是把问题简化为子问题的过程。…...

301.找出3位偶数

2094. 找出 3 位偶数 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<Integer> resnew ArrayList<>();List<Integer> linew ArrayList<>();public int[] findEvenNumbers(int[] digits) {Arrays.sort(digits);boolean[] numsnew boolea…...

使用Python从零开始构建端到端文本到图像 Transformer大模型

简介&#xff1a;通过特征向量从文本生成图像 回顾&#xff1a;多模态 Transformer 在使用Python从零实现一个端到端多模态 Transformer大模型中&#xff0c;我们调整了字符级 Transformer 以处理图像&#xff08;通过 ResNet 特征&#xff09;和文本提示&#xff0c;用于视觉…...

comfyui点击执行没反应一例

以前只遇到过执行工作流时出错的情况&#xff0c;从没试过说点了执行后一点反应都没有的情况。 今天下载 蓝色多脑盒《一键同时换头、换脸、发型、发色之双pulid技巧》分享的工作&#xff0c;第一次发现点击执行没反应。 发现左下角的地方连接错乱了。 更正连接后工作流能正常…...

01-libVLC的视频播放器:环境搭建以及介绍

项目展示项目播放器 VLC简介VLC媒体播放器(VideoLAN Client)是一款开源、跨平台的自由多媒体播放器,由VideoLAN项目开发。它支持众多音频与视频格式(如MPEG-2、MPEG-4、H.264、MKV、WebM、WMV、MP3等),以及DVD、VCD和各种流媒体协议。 VLC的特点跨平台支持:Windows、mac…...

用css画一条弧线

ui里有一条弧线&#xff0c;现在用css实现 关键代码 border-bottom-left-radius: 100% 7px 两个参数分别代表横向和纵向的深度border-bottom-right-radius: 100% 7px...

FPGA上实现SD卡连续多块读的命令

在FPGA上实现SD卡连续多块读的命令 CMD17命令一次只能读取1个块 CMD18命令一次可以连续读取多个块&#xff0c;直到停止命令CMD12 CMD18命令读的块数程序可任意设置 目录 前言 一、SD卡多块读命令CMD18 二、停止读命令CMD12 三、SD卡初始化SD卡连续块读操作的verilog代码 …...

从原理图到成品:PCBA设计的常见陷阱与规避方法

在电子设计领域&#xff0c;从原理图到PCBA&#xff08;Printed Circuit Board Assembly&#xff09;的转换过程中&#xff0c;布局布线是决定电路性能的关键环节。然而&#xff0c;许多工程师在实际操作中容易陷入一些常见误区&#xff0c;导致信号完整性、EMI&#xff08;电磁…...

强化学习信用分配——以RLHF为例分析

Section 1. 信用分配简介 在强化学习中&#xff0c;信用分配&#xff08;Credit Assignment&#xff09;是指确定某个动作或状态对最终奖励的具体贡献的过程。由于强化学习的奖励通常是延迟的&#xff08;Delayed Reward&#xff09;&#xff0c;比如围棋&#xff0c;只有在胜…...

.py文件和.ipynb文件的区别:完整教程

一、概述 Python开发者常用的两种文件格式.py和.ipynb各有特点&#xff0c;本教程将通过对比分析、代码示例和场景说明&#xff0c;帮助开发者全面理解二者的区别与联系。 二、核心区别对比 1. 文件格式本质 特性.ipynb文件.py文件文件类型JSON结构化文档纯文本文件存储内容…...

【AI】AI大模型发展史:从理论探索到技术爆发

一、早期探索阶段—理论与技术奠基 1.1 符号主义与连接主义的博弈 20世纪50-70年代&#xff0c;符号主义AI主导研究方向&#xff0c;通过专家系统模拟人类逻辑推理&#xff0c;但受限于计算能力和数据规模。80年代连接主义AI兴起&#xff0c;以神经网络为核心&#xff0c;反向…...

【项目管理】第11章 项目成本管理-- 知识点整理

相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 ​ ​ (二)知识笔记​ 第11章 项目成本管理 ​ 1.管理基础…...

初学STM32之编码器测速以及测频法的实现

资料来着江协科技 这篇是编码器测速&#xff0c;江科大的源码在测速的时候&#xff0c;定时器TIM2是一直在跑的&#xff0c;不受其它控的&#xff0c;它就一直隔1S读一次CNT的值。它也不管是否有输入信号。源码程序修改一下是可以实现对PWM信号以测频法的方式读取。 笔者稍微改…...

Linux 内核知识体系[1]

1 Linux内核知识体系 2.Linux内核学习路线 2.1基础知识准备 操作系统基础&#xff1a;了解操作系统的概念和基本原理&#xff0c;包括进程管理、内存管理、文件系统、输入输出等。 书籍&#xff1a;《操作系统&#xff1a;设计与实现》&#xff08;Andrew S. Tanenbaum&…...

408 计算机网络 知识点记忆(7)

前言 本文基于王道考研课程与湖科大计算机网络课程教学内容&#xff0c;系统梳理核心知识记忆点和框架&#xff0c;既为个人复习沉淀思考&#xff0c;亦希望能与同行者互助共进。&#xff08;PS&#xff1a;后续将持续迭代优化细节&#xff09; 往期内容 408 计算机网络 知识…...

Mac 下载 PicGo 的踩坑指南

Mac 下载 PicGo 的踩坑指南 一、安装问题 下载地址&#xff1a;https://github.com/Molunerfinn/PicGo/releases 下载之后直接安装即可&#xff0c;此时打开会报错&#xff1a;Picgo.app 文件已损坏&#xff0c;您应该将它移到废纸篓。 这是因为 macOS 为了保护用户不受恶意…...

消失的它:揭开 CoreData 托管对象神秘的消失之谜(上)

概述 使用 CoreData 作为 App 持久存储“定海神针”的小伙伴们想必都知道&#xff0c;我们需要将耗时的数据库查询操作乖巧的放到后台线程中&#xff0c;以便让主线程负责的 UI 获得风驰电掣般地享受。 不过&#xff0c;如何将后台线程中查询获得的托管对象稳妥的传送至主线程…...

电流互感器的两相星形接线的建模与仿真

微♥“电击小子程高兴的MATLAB小屋”获取巨额优惠 1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2016Rb&#xff09;软件。建议采用matlab2016 Rb及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.仿真模型 3.仿真结果 3.1一次…...

Day3—循环起来吧

第一章一切从安装有利工具开始 第二章Python基本语法 第三章结构化程序设计 3.1条件语句 3.1.1if语句 只需要判断一个条件&#xff0c;并且在该条件为 True 时执行特定的代码块&#xff0c;而在条件为 F…...

forms+windows添加激活水印

formswindows添加激活水印 多语言水印文本&#xff0c;根据系统语言自动切换。水印显示在每个屏幕的右下角&#xff0c;位置动态调整。半透明灰色文字&#xff0c;微软雅黑字体。窗口无边框、置顶、透明背景&#xff0c;不干扰用户操作。支持多显示器。高DPI适配。 效果图&am…...

014_多线程

多线程 多线程创建线程方式一&#xff1a;继承Thread类方式二&#xff1a;实现Runable接口方式三&#xff1a;实现Callbale接口 Thread的常用方法线程安全线程同步方式一&#xff1a;同步代码块同步方法方式三&#xff1a;Lock锁 线性池创建线程池处理Runnable任务处理Callable…...

R语言基础包可视化(一:axis函数)

R语言基础包可视化(一:axis函数) 背景axis函数(坐标轴函数)各参数的图片示例hadj和padjline和poslty,lwd,lwd.ticksgap.axis总结背景 之前在介绍正态Q-Q图的过程中,画过标准正态分布的随机数、分数数、分布函数、密度函数的图像,相关的文章连接参考此处:R语言正态Q-Q图…...

Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例

Spring MVC 处理 HTTP 状态码、响应头和异常的完整示例 1. 正常响应处理 通过 ResponseEntity 可以灵活控制 HTTP 状态码、响应头和响应体。 代码示例&#xff1a;创建资源返回 201 并设置 Location 头 import org.springframework.http.HttpHeaders; import org.springfram…...

Linux安装postgresql17

1、下载 wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.gz 2、上传解压 tar -zxvf postgresql-17.4.tar.gz 3、安装依赖 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel …...

从零搭建微服务项目Pro(第0章——微服务项目脚手架搭建)

前言&#xff1a; 在本专栏Base第0章曾介绍一种入门级的微服务项目搭建&#xff0c;尽管后续基于此框架上实现了Nacos、Eureka服务注册发现、配置管理、Feign调用、网关模块、OSS文件存储、JSR参数校验、LogBack日志配置&#xff0c;鉴权模块、定时任务模块等&#xff0c;但由于…...

dolphinscheduler创建文件夹显示存储未启用的问题--已解决

只要修改api-server/comf/common.properties和standalone-server/conf/common.properties里面的内容就可以了&#xff0c;应为你要靠standalone-server这个服务启动dolphinscheduler-web&#xff0c;其他就算怎么改你重启dolphinscheduler的时候系统也不会识别新的common.prope…...