【Linux系统】第七篇:Linux调试器gdb的使用

news2024/9/22 17:33:30

文章目录

  • 一、gdb简介
  • 二、gdb的安装
  • 三、gdb使用
    • 3.1、release和debug版本
    • 3.2、gdb基本使用命令
      • 1、启动gdb
      • 2、调试命令
      • 3、显示代码(list)
      • 4、断点命令(breakpoint)
      • 5 、变量命令(variable)
      • 6、特殊调试命令
      • 7、调用堆栈命令
      • 8、显示当前函数内临时变量:info locals

一、gdb简介

GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具;

二、gdb的安装

sudo yum install -y gdb

三、gdb使用

3.1、release和debug版本

在进行程序开发的过程中,有两个版本,一个是release版本,一个是debug版本。我们都知道,如果要进行调试程序,这个程序必须的debug版本的我们才可以进行调试的。

在Linux中查看程序版本:

readelf -S test

在这里插入图片描述
这里我们可以发现并没有关于debug的信息。其实在Linux中,gcc/g++编译器默认生成的版本是release版本的,如果想进入debug版本,我们就要带-g选项

gcc mytest.c -o mytest -g

在这里插入图片描述
在这里插入图片描述
总结:

  • 程序的发布方式有两种,debug模式和release模式
  • Linux中gcc/g++编译器默认生成的可执行程序是release模式
  • 要使用gdb调试,必须加上 -g 选项

3.2、gdb基本使用命令

1、启动gdb

gdb + 可执行程序文件,如下:

gdb mytest_g 
gdb -q mytest_g //表示不打印gdb版本信息,界面较为干净;

在这里插入图片描述

在这里插入图片描述

2、调试命令

与vs中的调试命令进行对比:
gdb中:

名称命令解释
开始运行run(r)相当于开始调试F5,执行代码后会在断点处停下
逐语句step(s)相当于F11,有函数会进入函数内部
逐过程next(n)相当于F10,不会进入函数内部,执行整条语句;

像逐过程、逐语句这样的命令一次输入之后,可直接回车仍会再次执行。

vs2019中:
在这里插入图片描述
运行演示:

  1. 直接调试
    在这里插入图片描述

  2. 逐过程
    在这里插入图片描述

  3. 逐语句
    在这里插入图片描述

3、显示代码(list)

名称命令解释
可指定行号list(l) + [N]从第 N 行开始显示 10 行代码,可接着上次的位置继续打印
可指定函数名list(l) + Name从函数起始位置左右开始显示代码

在这里插入图片描述

4、断点命令(breakpoint)

名称命令解释
某行打断点b + N在某行打上断点
函数打断点b + FuncName在函数内起始位置打断点
查看断点info + b显示断点信息列表
删除断点d + N删除序号为 N 的断点,省略序号就是删除所有断点
启用断点enable + N 启用序号为 N 的断点,省略序号就是启用所有断点
禁用断点disable + N禁用序号为 N 的断点,省略序号就是禁用所有断点

在这里插入图片描述

5 、变量命令(variable)

名称命令解释
监视变量display + ValName以列表的形式常显示在屏幕下方,类似于vs中的监视
取消监视undisplay + N去掉监视列表中的序号为 N 的变量的常显示
查看变量p + Name打印变量的值,不会常显示
修改变量set + Name设置指定变量的值

在这里插入图片描述

6、特殊调试命令

名称命令解释
结束当前函数finishfinish 会直接结束当前函数的调用,并停止在函数返回位置
继续运行continue(c)continue 继续运行至下一个断点,相当于F5
运行至指定行until + N运行至当前函数内部的第 N 行

在这里插入图片描述

在这里插入图片描述

7、调用堆栈命令

名称命令解释
调用堆栈breaktrace/bt查看程序各级栈帧的调用情况

在这里插入图片描述

8、显示当前函数内临时变量:info locals

名称命令解释
显示当前函数内临时变量info locals显示当前函数内临时变量

在这里插入图片描述

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

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

相关文章

企业微信的聊天机器人来了,免费下载(Python版)

大家好,这里是程序员晚枫,个人网址:python-office.com 上次分享了微信机器人的视频以后,视频下面有一个热门评论: 什么时候开发企业版微信机器人?自动回复、自动群发等等~ 在经历了一段时间的查找和开发以…

Github隐藏功能:显示自己的README,Github 个人首页的 README,这样玩儿

内容概览 前言创建仓库修改 README 的内容总结前言 大家最近有没有发现这个现象,有些名人的 Github 首页变得更丰富了?尤其是那个夺目的 README 板块!!! 请看,这是 iOS 喵神 的 Github 首页: …

Flink-时间和窗口(水位线、窗口、迟到数据的处理等)

文章目录时间和窗口时间水位线(Watermark)时间和窗口水位线有序和无序流的插入水位线生成策略(Watermark Strategies)水位线的传递窗口(Window)窗口窗口的分类窗口API概述窗口分配器(Window Ass…

“离开浪浪山”是假象,80%年轻人下班后还在学习,真实是想先上个山。

最近,又有一个关于年轻人与职场的新词横空出世—— 浪浪山。 什么是浪浪山? 每个人心中都有一座浪浪山。 浪浪山,其实是人生的一种状态,步入社会时满腔热血,然而很快就被现实给修理了一顿;想要辞职不干出去…

Eclipse各版本安装Tomcat插件全攻略

Eclipse Tomcat 插件的作用 Eclipse Tomcat 插件可以将Tomcat 集成到Eclipse中,插件安装之后在Eclipse中可以看到类似下面的几个图标: Eclipse Tomcat 插件的主要作用有: 在Eclipse 中可以直接启动,关闭和重启本机的Tomcat可以…

借力英特尔® Smart Edge,灵雀云 ACP 5G 专网解决方案获得多维度优化加速

近日,灵雀云联合英特尔推出了集成Smart Edge 模块的灵雀云 ACP 5G 专网解决方案,同时共同发布了《借力英特尔 Smart Edge,基于云原生解决方案的灵雀云 ACP 5G 专网版本获得多维度优化加速》白皮书。 得益于云计算技术和 5G 网络的高速发展&am…

龙腾万里,福至万家——“北京龙文化促进协会第九届龙抬头传承会”在京举办

2023年2月21日(农历2月初二)上午9:00点至下午13:00,由北京龙文化促进协会主办、传世经典(北京)文化发展有限公司承办、北京华夏龙文旅联盟协办的“北京龙文化促进协会第九届二月二龙抬头传承会”在北京市丰台区顺和国际大厦A口6层会议厅隆重召开。 传承会活动内容主…

美国主机闪退的解决方案有哪些

随着虚拟主机在我们日常生活中的普及,我们对主机的正常运行越来越依赖。在使用过程中,突然的闪退可能会导致重要数据或文件的丢失。因此,了解如何解决美国主机闪退的问题将有助于我们更好地保护数据和工作,并提高主机的效率和可靠…

(免费分享)基于jsp,ssm餐厅收银管理系统

是用于餐厅的收银管理系统,包含了四个模块1.桌位模块桌位模块主要是用于管理桌位的模块,包括点菜到结账的流程将桌位人数设置为0可以滞空当前桌位2.账单模块账单模块记录了每一天的帐单汇总,同时提供了年月日账单的统计,在日账单内…

MA控台总结资料

一:MA官网。https://www.malighting.com/二:下载地址。https://www.malighting.com/downloads/products/grandma2/三:查看OnPC版本号。四:BackUp。备份1:Internal。内部硬盘。2:Demoshows。内部Demo.3: Tem…

黑马程序员-Linux系统编程-01

课程链接 01-Linux命令基础习惯-Linux系统编程_哔哩哔哩_bilibili 课程重点笔记 01-linux命令基础习惯 终端 终端:一切输入、输出的总称,因此终端并不是一定指的是命令行,只要是能进行输入或者输出即可,但是在linux终端上‘’内…

智慧人防信息化整体建设方案

【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容: 整体框架基础支撑平台基础支撑平…

GCN的基础理论

文章目录GCN的基础理论1. 图的表示2. GCN的原理3. GCN的底层实现(pytorch)3.1 Data Handling of Graphs(图数据处理)3.2 Common Benchmark Datasets(通用基准数据集)3.3 Mini-batches4. 实现GCN层5. GCN简单…

Nacos注册中心和配置中心使用详情

Nacos Nacos就是Alibaba推出的一款 配置中心和注册中心结合的一款工具,属于SpringCloudAlibaba技术栈下 Nacos官网地址 https://nacos.io/zh-cn/index.html 安装启动 下载 目录结构 根据目录结构可以看出Nacos本身也就是一个java程序。SpringBoot程序 启动 c…

Qt线程池QThreadPool使用示例

目录前言1.线程池原理介绍2.QThreadPool详细介绍反复执行同一个任务设置线程过期时间线程数量信息3.QThreadPool示例4.总结前言 线程池顾名思义就是同时管理多个线程的"池子",它是一种并发处理技术,在程序中使用线程池能够提高线程的使用效率…

Spring之推断构造方法源码解析

Spring之推断构造方法源码解析 1、推断构造方法流程图 https://www.processon.com/view/link/5f97bc717d9c0806f291d7eb 2、AutowiredAnnotationBeanPostProcessor中推断构造方法的不同情况分析 https://www.processon.com/view/link/6146def57d9c08198c58bb26 // 有多个构…

Word控件Spire.Doc 【Table】教程(17):如何在 C#、VB.NET 中删除 Word 表格中的行和列

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

【CS224图机器学习】task4 图嵌入表示学习

前言:本期学习是由datawhale(公众号)组织,由子豪兄讲解的202302期CS224图机器学习的学习笔记。本次学习为图嵌入表示学习,主要通过无监督或半监督的方法让图中的信息表示为指定尺寸向量。不用人工完成特征工程&#xf…

CCNP350-401学习笔记(301-350题)

301、Drag and drop the virtual component from the left onto their descriptions on the right. 302、Which two actions, when applied in the LAN network segment, will facilitate Layer 3 CAPWAP discovery for lightweight AP? (Choose two.)A. Utilize DHCP option …

37k*16 薪,年后直接上岗,3年自动化测试历经3轮面试成功拿下阿里Offer....

前言 转眼过去,距离读书的时候已经这么久了吗?,从18年5月本科毕业入职了一家小公司,到现在快4年了,前段时间社招想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了阿里…