信创之国产浪潮电脑+统信UOS Linux操作系统体验10:visual studio code中调试C++程序

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython

一、引言

老猿在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验2:安装visual studio code和cmake搭建C++开发环镜》介绍了在国产浪潮电脑+统信UOS操作系统中安装visual studio code和cmake搭建C++开发环镜的过程及案例.

同时在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验9:使用vscode构建的配置任务编译C++程序》介绍了通过vscode构建配置任务并手工调整配置文件后,生成用于编译多个文件的C++项目的生成任务过程及配置解释。

但上述过程仅限于编译,无法执行调试,本文以案例介绍通过菜单在vscode中执行编译和调试的方法。

二、安装gdb调试器

vscode本身并不能支持调试C++程序,为了调试程序,需要先在统信UOS操作系统上安装gdb调试器,然后在vscode中进行调试相关配置。

在统信UOS操作系统上安装gdb调试器使用如下指令:

sudo apt-get install gdb

安装成功后在操作终端内就可以直接执行gdb命令,gdb安装的路径为:/usr/bin,在统信操作系统中还有个:/bin 的路径,这是/usr/bin目录的一个软连接,因此gdb的路径即可以是/usr/bin/gdb,也可以是/bin/gdb。

三、配置并执行编译任务

本次使用的测试代码及编译任务的配置与老猿在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验9:使用vscode构建的配置任务编译C++程序》介绍的一样。

但要注意的是要生成调试程序,g++的编译参数要有“-g”参数,具体配置的task.json文件内容如下:

{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: g++ 生成活动文件","command": "/usr/bin/g++","args": ["-fdiagnostics-color=always","-g","${fileDirname}/hello.cpp","${fileDirname}/set.cpp","-o","${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "编译器: /usr/bin/g++"}]
}

关于tasks的配置请参考老猿在CSDN的《信创之国产浪潮电脑+统信UOS操作系统体验8:Visual Studio Code中的任务文件tasks.json和任务配置要素介绍》的介绍。

配置编译任务后就可以执行编译了,在vscode选择:终端->运行生成任务
在这里插入图片描述

执行成功:
在这里插入图片描述

四、执行调试任务

此时在菜单中选择:运行->启动调试,就可以执行调试任务了:
在这里插入图片描述
可以在代码右边单击鼠标右键设置断点,在右上部位点击几个图标执行:继续往下执行(F5)、逐过程(F10)、单步调试(F11)等调试动作,也可以通过左边的窗口观看变量数据并设置监视的数据。

五、定制设置调试任务

上面通过编译后直接执行调试即可对程序进行调试,但对于一些特定场景,上述这种操作无法满足调试要求,需要单独配置配置launch.json的调试配置文件。

launch.json文件是用于配置VS Code在调试程序时的启动方式和参数的文件。通过编辑launch.json文件,可以指定要调试的程序、调试器的类型、启动参数等信息,以便在按下F5键时启动调试会话。

在VSCode中调试C++程序时,必须配置launch.json的情况有以下几种:

  1. 需要自定义调试配置:例如指定程序的运行参数、环境变量等,如下面这种配置:
{"version": "0.2.0","configurations": [{"name": "Debug with custom arguments","type": "cppdbg","request": "launch","program": "${workspaceFolder}/main.cpp","args": ["arg1", "arg2"],"environment": [{"name": "LD_LIBRARY_PATH","value": "/usr/local/opencv430/lib:/usr/local/opencv430/lib"}]}]
}
  1. 需要使用不同的调试器:默认情况下,vscode使用的是C/C++ extension提供的调试器,例如lldb或gdb。但是,如果要使用其他调试器,例如CodeLLDB,就需要配置launch.json来指定使用的调试器
  2. 需要配置远程调试:如果需要在远程机器上调试C++程序,就需要配置launch.json来指定远程机器的连接信息,其配置形式如下所示:
{"version": "0.2.0","configurations": [{"name": "Debug on remote machine","type": "cppdbg","request": "launch","program": "/path/to/remote/main.cpp","miDebuggerServerAddress": "remote-machine-ip:port"}]
}

关于launch.json的配置在此就不展开进一步介绍了。

小结

本文简单介绍了在vscode中调试C++程序的基本步骤,要调试程序时,首先要确保使用g++编译时带“-g”参数,然后进入vscode运行菜单按F5启动调试,如果程序带有参数等场景,还要配置launch.json调试配置文件。

写博不易,敬请支持

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

更多关于统信操作系统及vscode的介绍的内容请参考专栏《国产信创之光》的其他文章。

关于老猿的付费专栏

  1. 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
  2. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
  3. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
  4. 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ 前往老猿Python博文目录 https://blog.csdn.net/LaoYuanPython ░

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css动态传参,attr的妙用

今天再做一个编辑器的功能的时候,发现有一段非常奇妙的代码,使用attr获取div标签的data-label值。 css的attr?What fuck?这又是什么鬼东西,emmm。 查询后官方是这么回答的: CSS 表达式 attr() 用来获取选择到的元素的某一 HTM…

GO语言基础笔记(八):高级特性与性能优化

目录 反射(Reflection) 反射概念 反射的关键概念 反射的常见用途 代码示例 1. 检查类型和值 2. 修改变量值 3. 调用函数 4. 结构体反射 并发模式(Concurrency Patterns) 1. Worker Pool 模式 工作原理 在代码中的体现…

Mybatis插件运行原理及自定义插件

引言 MyBatis是一个流行的持久层框架,它提供了许多强大的功能来简化数据库访问和映射。其中一个非常重要的特性是插件(Interceptor),它允许开发者在MyBatis的执行过程中插入自定义逻辑,以实现对SQL执行过程的定制化。…

Unity坦克大战开发全流程——结束场景——通关界面

结束场景——通关界面 就照着这样来拼 写代码 hideme不要忘了 修改上一节课中的代码

django/springboot后台+vue/js前端设计一款高校毕业生就业方向统计管理系统及可视化大屏

项目设计目的: 设计一款高校毕业生就业方向统计管理系统及可视化大屏,旨在为高校提供一个方便、高效的毕业生就业数据管理平台,帮助学校更好地了解毕业生的就业情况和就业方向,以便进行教育和就业指导。 功能需求: 用…

SpringBoot入门到精通-使用Jasypt对数据库账号密码加解密

引用代码库 <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version></dependency> 配置启动 EnableEncryptableProperties public class Ce…

动态内存管理篇

为什么要动态内存分配&#xff1f; 之前&#xff0c;我们向内存申请空间&#xff0c;有两种方式&#xff0c;一种是定义变量&#xff0c;一种是建立数组&#xff1b;但是&#xff0c;这两种方式都有缺陷&#xff0c;创建的空间大小是固定的&#xff0c;在程序的运行过程中&…

买对好车省钱又防坑,高性价比的买车攻略

一、教程描述 正所谓隔行如隔山&#xff0c;买车这件事情并不简单&#xff0c;买车的内幕还是有不少的&#xff0c;本套教程讲述买车攻略&#xff0c;非常适合准备买车的朋友&#xff0c;可以帮助大家买车少入坑&#xff0c;高性价比买到自己心仪的车。本套买车教程&#xff0…

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k &#xff0c;请你执行下述…

chromium通信系统-ipcz系统(七)-ipcz系统代码实现-跨Node通信-NonBroker和NonBroker通信

在chromium通信系统-ipcz系统(六)-ipcz系统代码实现-跨Node通信-基础通信 一文中我们分析了broker 和 nonbroker 通信的过程。本文我们来分析NonBroker 和NonBroker的通信过程&#xff0c;同样以单元测试为例子分析。 mojo/core/invitation_unittest.cc 951 DEFINE_TEST_CLIEN…

面试算法:快速排序

题目 快速排序是一种非常高效的算法&#xff0c;从其名字可以看出这种排序算法最大的特点就是快。当表现良好时&#xff0c;快速排序的速度比其他主要对手&#xff08;如归并排序&#xff09;快2&#xff5e;3倍。 分析 快速排序的基本思想是分治法&#xff0c;排序过程如下…

Python期末复习资料

一、基础知识点 1. Python基础语法 变量与数据类型 定义变量&#xff0c;理解变量的命名规则基本数据类型&#xff1a;整数、浮点数、字符串列表、元组、字典、集合等复合数据类型 1. 1 变量 1.1.1 变量的定义 在Python中&#xff0c;变量是用来存储数据值的标识符。你可…

.Net8 新特性之键控服务-依赖注入一对多模式

在.NET8 中引入了KeyedService支持&#xff0c;这使得可以支持一对多的依赖注入了。在官方&#xff0c;这个功能叫键化DI服务。 什么是键化DI服务&#xff1f;官方解释是这样的&#xff0c;键化依赖项注入&#xff08;DI&#xff09;服务提供了一种适用键来注册和检索DI服务的…

【随口一说】最近的CSDN

这段时间随便发的一篇博文很快就有“点赞”、“收藏”、“关注”的信息&#xff0c; 而且简单看了一眼用户&#xff0c;很多都是空的或者一堆转载&#xff0c; 机器人也太明显了点&#xff0c;很让人不舒服&#xff0c; 不花点心思设计文章评优推送算法反倒用机器人刷热门&…

问题描述:智能驾驶中的FSD是什么意思。

问题描述&#xff1a;智能驾驶中的FSD是什么意思。 问题描述&#xff1a; FSD 在智能驾驶领域通常指的是 "Full Self-Driving"&#xff0c;即全自动驾驶。这表示汽车具备了足够的智能和技术&#xff0c;能够在不需要人类干预的情况下完成所有驾驶任务。全自动驾驶系…

硬件知识之ESD保护器件

ESD保护器件&#xff0c;全称是Electrostatic Discharge Protection Device&#xff0c;是一种专门用与防止电子设备遭受外部静电放电而损坏的元器件。静电放电会在接口或器件表面积累成千上万伏特的能量&#xff0c;这些能量可能会引起设备故障或者持久性损伤&#xff0c;甚至…

185.【2023年华为OD机试真题(C卷)】报文重排序(顺序索引实现JavaPythonC++JS)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】报文重排序(顺序索引…

电机(一):直流有刷电机和舵机

声明&#xff1a;以下图片来自于正点原子&#xff0c;仅做学习笔记使用 电机专题&#xff1a; 直流电机&#xff1a;直流有刷BDC&#xff08;内含电刷&#xff09;&#xff0c;直流无刷BLDC&#xff08;大疆的M3508和M2006&#xff09;,无刷电机有以下三种形式&#xff1a;&a…

C语言之分支与循环【附6个练习】

文章目录 前言一、什么是语句&#xff1f;1.1 表达式语句1.2 函数调用语句1.3 控制语句1.4 复合语句1.5 空语句 二、分支语句&#xff08;选择结构&#xff09;2.1 if语句2.1.1 悬空else2.1.2 练习&#xff08;1. 判断一个数是否为奇数 2. 输出1-100之间的奇数&#xff09; 2.2…

deepfacelive实时换脸教程(2024最新版)

deepfacelive其实操作用法很简单&#xff0c;难的是模型的制作。本帖主要讲deepfacelive&#xff08;下文简称dflive&#xff09;软件本身的操作&#xff0c;以及模型怎么从dfl转格式过来&#xff0c;至于模型如何训练才能效果好&#xff0c;请移步教程区&#xff0c;看deepfac…