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

ubuntu系统下c++ cmakelist vscode debug(带传参的debug)的详细示例

c++和cmake的debug,网上很多都需要配置launch.json,cpp.json啥的,记不住也太复杂了,我这里使用cmake插件带有的设置,各位可以看一看啊✌(不知不觉,竟然了解了vscode中配置文件的生效逻辑🤣)

  1. 克隆一个c++仓库
git clone git@github.com:jinxianwei/ImageBasedModellingEduV1.0.git
  1. 在vscode中打开该文件夹

在这里插入图片描述

  1. 添加一些扩展(一些扩展不知是否有用,需要精简)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 选择编译器(正常都有吧,如果没有的话,可能ubutu是新安装的,需要apt install安装c++啥的,需要百度)
    在vscode的底部有如下小的工具(前提安装了上述所有的插件)
    在这里插入图片描述
    选择 “未选择任何工具包”,会跳出如下选项
    在这里插入图片描述
    选择GCC9,即最后一个选项(其他的gcc可能也ok,反正就是个编译的,别差太多,估计都行)
    选择后会自动进行编译,或者手动点击最下面的"生成"
    在这里插入图片描述
    可能出现cmake报错,有未安装的包,需要apt install一下(可以百度)
    在这里插入图片描述
    解决所有的报错,直至点击”生成“时出现如下效果
    在这里插入图片描述
    恭喜,当前项目已经编译成功

  3. 尝试使用cmake插件的按钮,运行生成的某一可执行文件
    在这里插入图片描述
    选择task2_test_camera_model这个可执行文件(该可执行文件不需要传递参数),再点击左侧的三角按钮,出现如下效果

在这里插入图片描述

分割线===================================================================================
6. 重点,使用任何软件编程,最重要的就是debug的使用,如果某可执行文件不需要传递参数,则直接点击最下面的bug按钮,并再相应的cpp文件中添加断点,就可以停到断点处;如果可执行文件需要传递参数呢,如下

点击最下面启动目标,出现如下选项
在这里插入图片描述
这里面的所有可启动项均为此项目编译完成后的可执行文件,选择task4的这个
在这里插入图片描述
点击左侧的运行,出现如下错误
在这里插入图片描述
原因:可执行文件需要两个传入的路径一同运行
debug时,cmake插件中的参数设置,这样设置:
选择左侧cmake图标,
在这里插入图片描述
点击上方的齿轮按钮
在这里插入图片描述
选择这个视图下的:在settings.json中编辑
在这里插入图片描述

在弹出的位置处,添加args参数
在这里插入图片描述
选择args,并设置两个有效的图像文件夹(选择项目下的sequence和temp的绝对路径)
在这里插入图片描述
点击最下面的运行和bug按钮
在这里插入图片描述
在这里插入图片描述

注意:不要点击vscode左上角的那个debug,他们走的是不同的配置,是不同的配置,是不同的配置

进一步理解

上述更改的settings.json位于本机的vscode配置文件中,这是一个关于软件本身的配置文件,修改了这里的cmake debug config意味着,当有其他c++项目需要debug时,这个参数需要一同更改,这不方便保存每个项目的debug记录
在这里插入图片描述
熟悉python的或是其他语言的vscode,可能了解到项目文件夹本身有一个.vscode的文件夹,其中也可以设置settings.json文件,我们可以将原本配置在软件config中的”args“关键字配置在这里,如下图所示(可见,vscode的参数配置逻辑可能为:将软件的settging.json和项目文件夹下的.vscode中的settings.json合并,如果出现重复的关键字,会由项目本身文件夹下的关键字的参数进行更改)
在这里插入图片描述

在这里插入图片描述

别忘了还原那个settings.json中的内容欧

祝愿跟着复现的你,不会遇到各种各样的奇怪问题✌


http://www.kler.cn/a/232217.html

相关文章:

  • 云计算复习文档
  • 2002.6 Partitioning the UMLS semantic network.划分 UMLS 语义网络
  • 深入解析 MySQL 数据库:数据库时区问题
  • css:浮动
  • Android笔记(三十六):封装一个Matrix从顶部/底部对齐的ImageView
  • npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)
  • 通过平扫CT实现胰腺癌早筛(平扫CT+AI)
  • pycharm像jupyter一样在控制台查看后台变量
  • 2024年Java架构篇之设计模式
  • 【Flink入门修炼】1-3 Flink WordCount 入门实现
  • 华为第二批难题一:基于预训练AI模型的元件库生成
  • Backtrader 文档学习- Plotting -Plotting on the same axis
  • 【工作学习 day04】 9. uniapp 页面和组件的生命周期
  • 恒流源方案对比
  • ASP.NET Core 7 MVC 使用 Ajax 和控制器通信
  • vue.config.js和webpack.config.js区别
  • 从零开始手写mmo游戏从框架到爆炸(零)—— 导航
  • 基于若依的ruoyi-nbcio流程管理系统自定义业务回写状态的一种新方法(二)
  • 【前端高频面试题--Vue基础篇】
  • 【Linux】vim的基本操作与配置(下)
  • Redis篇之持久化
  • Mac 版 Excel 和 Windows 版 Excel的区别
  • Java汽车销售管理
  • C语言中在main函数之后运行的函数
  • Android的视图绑定
  • 相机图像质量研究(5)常见问题总结:光学结构对成像的影响--景深