Linux下调试代码——gdb的使用

1. 文件准备:

  • 测试代码:

  • Makefile文件: 

  • 执行结果:

此时,我们的结果是存在问题的,即最终结果少了100。现在我们用gdb来调试它。

我们发现我们还没有安装gdb,这里安装一下。

2. 环境准备:

sudo yum install -y gdb

作用:安装gdb。 

 gdb 【目标文件】

作用:开始调试可执行目标文件。

q

作用:退出调试。 

但是,此时gdb还调试不了。因为在linux中,gcc/g++生成的软件,默认是release版本的。 

这里需要在gcc命令后面跟上 -g ,标识以debug方式发布。

为了和原来的release版本做区分,我们这里将可执行目标文件的名称改为 mytest_g 。 

 

同时,我们也会发现debug版本的程序的大小大于release版本的程序的大小。

原因在于debug版本要加入更多的调试信息。

证明: 

readelf -S 【可执行文件名】 

作用:读取可执行程序的二进制构成 。

release版本:

debug版本:

通过grep过滤,我们发现debug版本的可执行程序的确比release版本的可执行程序多了调试信息。  

 3 命令大全:

  • list/l 行号:显示源代码,接着上次的位置往下列,每次列10行。
  • list/l 函数名:列出某个函数的源代码。
  • r/run:运行程序。
  • n / next:单条执行。
  • s/step:进入函数调用
  • break/b 行号:在某一行设置断点
  • break/b 函数名:在某个函数开头设置断点
  • info break :查看断点信息。
  • finish:执行到当前函数返回(把当前函数跑完),然后停下来等待命令
  • print/p:打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p 变量:打印变量值。
  • set var:修改变量的值
  • continue/c:从当前位置开始连续而非单步执行程序
  • run/r:从开始连续而非单步执行程序
  • delete breakpoints/d:删除所有断点
  • delete breakpoints n/d n:删除序号为n的断点
  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点
  • info/i breakpoints:参看当前设置了哪些断点
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪
  • until X行号:跳至X行
  • breaktrace/bt:查看各级函数调用及参数
  • info/i locals:查看当前栈帧局部变量的值
  • quit/q:退出gdb

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Inno Setup 打包java程序

Inno Setup工具打包java程序(包括mysql) 一:准备安装工具(点击即下载) 1.innosetup 2.battoexe 二:需要打包的内容放同一个文件夹 三.使用battoexe将.bat文件转变为.exe文件 转后的.exe放在同个文件夹 四.使用innosetup进行…

flutter 打包 exe

采用官方的MSIX打包 原文链接 https://blog.csdn.net/weixin_44786530/article/details/135308360 第一步:安装依赖 在项目根目录,执行命令: flutter pub add --dev msix 等待安装完成,就好了 第二步:打包编译 当m…

富唯智能复合机器人

复合机器人&产品概述 富唯智能复合机器人集协作机器人、移动机器人和视觉引导技术于一体,搭载ICD系列核心控制器,一体化控制整个复合机器人系统,并且可以对接产线系统,搭配我司自研的2D/3D视觉平台,能够轻松实现工…

Gobject tutorial 七

The GObject base class GObject是一个fundamental classed instantiatable type,它的功能如下: 内存管理构建/销毁实例set/get属性方法信号 /*** GObjectClass:* g_type_class: the parent class* constructor: the constructor function is called by g_object…

【机器学习】第3章 K-近邻算法

一、概念 1.K-近邻算法:也叫KNN 分类 算法,其中的N是 邻近邻居NearestNeighbor的首字母。 (1)其中K是特征值,就是选择离某个预测的值(例如预测的是苹果,就找个苹果)最近的几个值&am…

Word页码设置,封面无页码,目录摘要阿拉伯数字I,II,III页码,正文开始123为页码

一、背景 使用Word写项目书或论文时,需要正确插入页码,比如封面无页码,目录摘要阿拉伯数字I,II,III为页码,正文开始以123为页码,下面介绍具体实施方法。 所用Word版本:2021 二、W…

plc如何接线

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「plc的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!PLC自动化控制在电气自动化和…

【Python】对应接口url 被编码后的处理

Python 系列 文章目录 Python 系列前言一、网页链接是什么?二、使用步骤1.解码 总结 前言 提示:这里可以添加本文要记录的大概内容: 我们在查找网页的开发代码的时候,可能经常查看到接口的链接是: %7B%22funName%22%…

Python3 Matplotlib展示数据

matplotlib 是一个 Python 库,用于创建各种类型的图表和可视化。它提供了一个类似于 MATLAB 的绘图界面,使用户能够轻松地绘制线图、散点图、直方图、饼图等各种图表类型。matplotlib 可以在 Python 脚本、IPython shell、Jupyter Notebook 等环境中使用…

探索数据分析无限潜能:vividime Desktop助力企业智能决策

在数字化浪潮席卷全球的今天,数据已经成为企业最宝贵的资产之一。通过对海量数据的深度挖掘和分析,企业能够洞察市场趋势、优化运营流程、提升用户体验,从而在激烈的市场竞争中脱颖而出。永洪科技的vividime Desktop作为一款功能强大、操作简…

客观评价,可道云teamOS搭建的企业网盘,如Windows本地电脑一般的使用体验真的蛮不错

不管是企业网盘还是私有网盘,简单易用一直是我比较在意的。快速能上手使用,甚至不需要习惯一套新的操作逻辑,代表着不需要学习适应,能够迅速投入正常使用。 在这个过程中,可道云teamos以其Windows电脑般的流畅体验&am…

【PowerDesigner】PDM生成建表脚本

目录 🌊1. PowerDesigner简介 🌍1.1 常用模型文件 🌍1.2 PowerDesigner使用环境 🌊2. PDM生成建表脚本 🌊3. 研究心得 🌊1. PowerDesigner简介 🌍1.1 常用模型文件 主要使用PowerDesigne…

操作系统入门 -- 进程的同步与互斥

操作系统入门 – 进程的同步与互斥 在之前的文章中,我们了解了进程是如何被调度的。但在调度之前,进程需要获得资源。而获得这些资源则可能让进程之间陷入冲突。为了高效且平等地调度线程,需要引入同步功能。 1.临界资源 1.1 临界资源的描述…

AI 克隆声音,只需 3 分钟(附最全教程)

作者:寒斜 继生成式文本大模型 Chatgpt,生成式图片 Stablediffusion 之后生成式语音 Text To Speech 在开源社区也出现了一匹黑马,就是 GPT-Sovits [ 1] 。 之所以说他是黑马,让人觉得惊艳,是因为在语音效果克隆上做…

之所以选择天津工业大学,因为它是双一流、报考难度适宜,性价比高!天津工业大学计算机考研考情分析!

天津工业大学(Tiangong University),简称“天工大”,位于天津市,是教育部与天津市共建高校、国家国防科技工业局和天津市共建的天津市重点建设高校、国家“双一流”建设高校、天津市高水平特色大学建设高校、中国研究生…

引领未来建筑潮流:轻空间设计团队打造“淄博珍珠”

作为国内单体最大的气膜会展场馆,“淄博珍珠”自四年前启用以来,已成为淄博市的重要地标和经济引擎。该场馆首次亮相于第二十届中国(淄博)国际陶瓷博览会,凭借其独特的设计和先进的建筑理念,吸引了社会各界…

AD层次原理图绘制

一、在原理图中添加端口 二、添加层次图 三、更新层次图 四、也可以先画层次图,再绘制原理图,这里就不做演示了

电影美学复古胶片特效视频转场模板 | Premiere Pro 项目工程文件

这个Premiere Pro项目工程文件是一个电影美学胶片特效视频转场模板,每个过渡效果都散发出一种有机的怀旧魅力,让人回忆起经典电影卷轴和模拟摄影的独特美感。 项目特点: 胶片烧伤过渡效果:包括从微妙的闪烁到大胆的爆发&#xff…

第九届信也科技杯全球AI算法大赛——语音深度鉴伪识别参赛A榜 0.968961分

遗憾没有进复赛,只是第41名。先贴个A榜的成绩。A榜的前三十名晋级,个个都是99分的大佬,但是B榜的成绩就有点低了,应该是数据不同源的问题,第一名0.78分。官网链接:语音深度鉴伪识别 官方baselin:https://g…

Centos7.9安装Python3.8.16解决yum无法使用问题

Centos7.9安装Python3.8.16解决yum无法使用问题 文章目录 前言一、前期准备1.下载到新建目录2.安装依赖 二、编译1.解压2.编译安装3.建立命令软链接3-1.查看默认的python及新安装的python3都安装在哪?3-2.修改python3的软链接3-3.修改pip的软链接 三、修复yum1.查看…