VSCode断点调试CMake工程项目的实现步骤

 更新时间:2021年03月10日 11:57:53   作者:changshen_xu  
这篇文章主要介绍了VSCode断点调试CMake工程项目的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

断点调试在【排查代码错误】时,发挥着巨大的作用!本文旨在使用VS Code实现对CMake工程项目的【断点调试】。

初始状态

假设我们已经有一个CMake工程项目(比如从github上直接下载并做了一些修改),且我们可以保证能够编译、运行(换言之,能保证无语法错误,但不能保证无逻辑错误)。

mkdir build && cd build
cmake ..
make -j2
./run_test

以上命令在终端中输入、被(一气呵成从头至尾地)执行。
此时,我们的目标是,在VS Code中实现设置断点,并在运行时停在此处!

两步走!

第一步: 修改CMakeLists.txt中相应语句为Debug模式。
【例】原语句可能在Release模式,如下:

set(CMAKE_BUILD_TYPE "Debug")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")

则,保证修改后为:

set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -Wall -g -ggdb")

该步骤亦应通过在终端输入编译、运行指令,检验并确保无误。

第二步: 在VS Code中配置一个launch.json文件
先上一张结果图,以清晰阐述该过程!

在这里插入图片描述

从图中可以看出,分成了三小步:

a. 配置lauch.json,依次点击黄色框中的“小虫子”和“齿轮”,将打开一个lauch.json的模板。而我们只需要修改其中的一行命令:

"program": "${workspaceFolder}/build/estimate_depth" // 是可执行文件所在的位置

ps. 整个launch.json文件的图片放在了文末。

b. 点击如图位置的build,编译CMake工程项目。

c. 打好断点,运行即可。如图程序停在了断点位置(ps.单步执行了一次,故停在了断点后一行)。

在这里插入图片描述

参考博文:利用VScode和cmake编译构建C++工程代码

到此这篇关于VSCode断点调试CMake工程项目的实现步骤的文章就介绍到这了,更多相关VSCode断点调试CMake内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++多线程实现电子词典

    C++多线程实现电子词典

    这篇文章主要为大家详细介绍了C++多线程实现电子词典,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 从使用角度解读c++20 协程示例

    从使用角度解读c++20 协程示例

    类比线程,线程是个函数,把这个函数交给 创建线程的api,然后这个函数就变成线程了,这个函数本身没有任何特殊的地方,就是普通函数,这篇文章主要介绍了从使用角度解读c++20 协程示例,需要的朋友可以参考下
    2023-01-01
  • Linux中rm命令使用以及C/C++代码实现

    Linux中rm命令使用以及C/C++代码实现

    m 是remove 的缩写,Linux中 rm 命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除,这篇文章主要给大家介绍了关于Linux中rm命令使用以及C/C++代码实现的相关资料,需要的朋友可以参考下
    2022-04-04
  • C++之预处理功能详解

    C++之预处理功能详解

    预处理器是 C++ 编译器提供的一个工具,允许程序员在编译之前对源代码文件做出修改,本文将给大家通过代码示例详细介绍C++的预处理功能,需要的朋友可以参考下
    2023-05-05
  • C++中的拷贝构造函数详解

    C++中的拷贝构造函数详解

    大家好,本篇文章主要讲的是C++中的拷贝构造函数详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • 详解C++ STL模拟实现vector

    详解C++ STL模拟实现vector

    这篇文章主要为大家详细介绍了C++如何模拟实现STL容器vector,文中的示例代码讲解详细,对我们学习C++有一定帮助,需要的可以参考一下
    2023-01-01
  • C++如何在构造函数和析构函数中调用虚拟函数

    C++如何在构造函数和析构函数中调用虚拟函数

    这篇文章主要介绍了C++如何在构造函数和析构函数中调用虚拟函数问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • c语言中全局变量的设置方式

    c语言中全局变量的设置方式

    这篇文章主要介绍了c语言中全局变量的设置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • C++分析讲解类的静态成员函数如何使用

    C++分析讲解类的静态成员函数如何使用

    与静态数据成员不同,静态成员函数的作用不是为了对象之间的沟通,而是为了能处理静态数据成员,静态成员函数没有this指针。既然它没有指向某一对象,也就无法对一个对象中的非静态成员进行默认访问
    2022-04-04
  • C++ 实现桶排序的示例代码

    C++ 实现桶排序的示例代码

    桶排序或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子,本文详细的介绍了如何实现,感兴趣的可以了解一下
    2021-07-07

最新评论