Linux环境下gdb调试方法与演示

这篇具有很好参考价值的文章主要介绍了Linux环境下gdb调试方法与演示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【Linux专栏】🎈
本专栏旨在分享学习Linux的一点学习心得,欢迎大家在评论区讨论💌
演示环境:centos7

如果还未安装gdb的话,输入下面命令进行安装即可:

yum install gdb

一、背景引入

首先,gdb是基于命令行式的调试工具。

debugrelease是软件开发过程中的两个不同阶段或模式。debug用于开发和调试软件,并提供更多的调试信息和错误排查的能力。而release用于最终交付给用户和客户的版本,它经过优化和编译,以提供更好的性能和较小的体积。

简单来说就是在软件开发阶段利用debug模式来进行调试,而release模式一般用于公司的测试人员进行最终的测试。

debug版本的代码是可以被调试的(debug版本的代码在形成可执行程序的时候会有调试信息),而release版本的代码不可以调试(没有调试信息)。

在Linux中究竟是使用哪一种模式的代码呢?我们来看一下:

输入命令:gdb test
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维
当然我们无法直接对代码进行调试,我们输入命令:readelf -S test(读取一个可执行程序的二进制构成),请看:
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维
再次发现其中没有debug调试信息,输入命令(查看debug调试信息):readelf -S test | grep -i debug,运行结果如下(发现什么都没有):
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

所以,通过以上我们就可以知道gcc编译是通过release方式进行发布的,无法进行调试。

二、如果才能进行debug调试

我们需要修改Makefile文件,请看:
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

通过make命令形成可执行程序如下:
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

输入命令(查看刚刚新形成的可执行程序test-debug的debug信息):readelf -S test-debug | grep -i debug,结果如下:
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维
之所以test-debug可执行程序能够调试就是因为上图中的debug可调试信息。
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

总结:如果代码要能够被gdb调试工具进行调试的话,必须由debug发布,Makefile文件中必须加上-g

三、gdb常用选项

gdb常用选项如下:

  • listl 行号:显示源代码文件,接着上次的位置往下列,每次列10行。
  • listl 函数名:列出某个函数的源代码。
  • rrun:运行程序。
  • nnext:单条执行(相当于VS中的F10,即逐过程)。
  • sstep:进入函数调用(相当于VS中的F11,即逐语句)。
  • b/break 行号 :在某一行设置断点。
  • break 函数名:在某个函数开头设置断点。
  • info binfo break:查看断点信息。
  • finish:执行到当前函数返回,然后停下来等待命令。
  • print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数。
  • p 变量:打印变量值。
  • set var:修改变量的值。
  • ccontinue:从当前位置开始连续而非单步执行程序。
  • rrun:从开始连续而非单步执行程序。
  • delete breakpoints:删除所有断点。
  • delete breakpoints n:删除序号为n的断点。
  • disable breakpointsdisable 断点序号:禁用断点。
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • enable breakpointsenable 断点序号:启用断点
  • breaktrace(或bt):查看各级函数调用及参数
  • info(i) locals:查看当前栈帧局部变量的值

启动gdb命令gdb 可执行程序

例如:输入命令:gdb test,结果如下:
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

有两种方式可以退出gdb:
方法1:ctrl + d
方法2:q或者quit

通过list 行号来显示我们编写的源代码,演示如下:
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

举例:info b
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

举例(显示断点信息):b 行号
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

举例:p 变量
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

举例(跟踪查看一个变量,每次停下来都显示它的值
):display 变量名undisplay 变量名/常显示变量的序号相反
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

举例:until X行号:跳至X行
相当于跳过一定行数的代码块
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维

举例:finish执行到当前函数返回,然后挺下来等待命令
Linux环境下gdb调试方法与演示,Linux专栏,linux,运维文章来源地址https://www.toymoban.com/news/detail-729315.html

到了这里,关于Linux环境下gdb调试方法与演示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux调试器gdb

    本文已收录至《 Linux知识与编程 》专栏! 作者: ARMCSKGT 演示环境: CentOS 7     ​ 目录 前言 正文 下载gdb 生成可调式文件 进入gdb gdb常用指令 查看代码 l  运行程序 r  断点设置 b  显示信息 info  查看断点 info b  删除断点 d  禁用断点 disable breakpoints  启用断点 enable brea

    2024年02月14日
    浏览(42)
  • Linux--调试器:gdb

    gcc与g++默认动态链接形成的可执行程序(比如a.out)是 release 版本,不可调试!!! 如何搞成debug可调试版本? 查看可执行程序存储了哪些内存空间:   调试语法:

    2024年02月13日
    浏览(38)
  • Linux——gdb调试器

    目录    前言: 二.gdb定义及指令: 如何查看该exe文件是否为Debug版本?两种方法: 三.gdb调试:         调试指令1:l指令(小写L) run指令:运行程序,相当于VS中的直接运行不调试——可简化输入r  break指令:设置断点——指令可简化输入为b ​编辑  info b指令:查看整个代码

    2024年02月07日
    浏览(27)
  • Linux - 还不懂 gdb 调试器?(调试软件)

    当前,我们可以使用 make/makefile 来程序化执行代码文件;可以使用 gcc/g++ 等编译器来编译代码;可以使用 vim 编辑器来编写代码;其实在 Linux 当中还有一个工具,可以实现调试工作,这个工具就是 -- gdb。 在了解调试器之前,你应该对代码的发布版本做一些了解: 我们在 VS

    2024年02月07日
    浏览(40)
  • 【Linux】Linux下调试器gdb的使用

    👑作者主页:@安 度 因 🏠学习社区:StackFrame 📖专栏链接:Linux 如果无聊的话,就来逛逛 我的博客栈

    2024年02月19日
    浏览(32)
  • Linux调试器之gdb

    我们前面介绍了几个基本的环境开发工具。例如通过yum我们可以安装和卸载软件、通过vim我们可以写代码、通过gcc和g++我们可以编译代码成可执行程序。但是如何在Linux下调试代码呢?我们并未介绍,本期我们将来介绍最后一个工具 --- 调试器gdb。 程序的发布方式 gdb基本的调

    2024年04月16日
    浏览(52)
  • Linux系统gdb调试常用命令

    GDB(GNU调试器)是一款常用的调试工具,用于调试C、C++等编程语言的程序。以下是一些常用的GDB命令: 1. 启动程序:    - `gdb executable`:启动GDB调试器,并加载可执行文件。 2. 设置断点:    - `break line`:在指定行设置断点。    - `break function`:在指定函数的入口处设置断

    2024年02月10日
    浏览(27)
  • 【Linux】gdb调试器的使用

    文章目录 一、gdb简介 二、调试前的准备 1、生成调试文件 2、启动 gdb  三、gdb 使用方法  1、查看源代码 2、设置 / 查看断点(多种方式设置断点) 方法一 方法二 方法三 3、run  4、删除断点、断点无效 5、逐过程调试(以函数为单位) 6、逐语句调试 7、查看调用链 8、查看变

    2024年02月02日
    浏览(39)
  • Linux的调试工具 - gdb(超详细)

    程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,发布成debug模式 注: 如果没有断点,程序将运行到底 注: 单条执行需要在调试启动的情况下进行,需要先打断点

    2024年02月07日
    浏览(29)
  • 【linux】git和gdb调试工具

    这两个步骤用于识别提交代码的身份,一个你的名字,一个你的邮箱 开启本地仓库 克隆本地仓库成功 我们将这个仓库拷到了111目录底下. 我们发现少了一个.gitignore,因为.gitignore是隐藏文件,所以使用ls -la查看 用于查看提交状态 上面可以看到提交人的信息,以及时间,以及提

    2024年02月22日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包