[Linux] GDB使用指南----包含CentOS7下安装以及使用

什么是GDB?

GDB 是由 GUN 软件系统社区提供的调试工具,同 GCC 配套组成了一套完整的开发环境,GDB 是 Linux 和许多 类Unix系统的标准开发环境。可以用来调试C、C++、Go、java、 objective-c、PHP等语言。

GDB的作用

  • 程序启动时,可以按照自定义的要求运行程序,例如设置参数和环境变量;
  • 可以让被调试的程序在所指定的代码处暂停运行,并查看当前运行状态 (例如当前变量的值,函数的执行结果),即支持断点调试;
  • 当程序被停住时,可以检查当前程序的中的变量的状态;
  • 在程序执行过程中,可以改变某个变量的值,还可以改变代码的执行顺序,从而尝试修改程序中出现的逻辑错误。

安装GDB(CentOS7)

  • 查看是否安装
rpm -qa | grep gdb

在这里插入图片描述
说明已经安装了。

  • 如果没有安装,使用以下命令:
sudo yum install -y gdb

如何生成有调试信息的程序

Linux gcc/g++出来的二进制程序,默认是release(发布版本)模式,在编译命里里面加 -g 的选项,在进行make即可生带DeBug( 调试版本 )版本的可执行程序。
一般会在系统出现错误时,利用core文件来进行调试,有关于如何生成code文件以及一些相关的问题,请看我的另一篇文章linux系统下产生Segmentation fault 与 Segmentation fault (core dumped)!!!

https://blog.csdn.net/m0_73537205/article/details/138519485?spm=1001.2014.3001.5501

使用GDB

先来介绍一些调试代码

  • l(list) 行号/函数名 —— 显示对应的code,每次10行,也可以通过l xx xx 来查看xx-xx行的源码。 在这里插入图片描述

*r(run)【无断点直接运行、有断点从第一个断点处开始运行】

  • b(breakpoint) + 行号 —— 在那一行打断点
    在这里插入图片描述

  • b 源文件:函数名 —— 在该函数的第一行打上断点

  • b 源文件:行号 —— 在该源文件中的这行加上一个断点

  • info b—— 查看断点的信息
    在这里插入图片描述
    其中:
    Num —— 编号
    Type —— 类型
    Disp —— 状态
    Enb —— 是否可用
    Address —— 地址
    What —— 在此文件的哪个函数的第几行

  • d(delete) + 当前要删除断点的编号 —— 删除一个断点

  • d + breakpoints —— 删除所有的断点

  • disable b(breakpoints) —— 使所有断点无效

  • enable b(breakpoints)—— 使所有断点有效

  • disable b(breakpoint) + 编号 —— 使一个断点无效

  • enable b(breakpoint) + 编号 —— 使一个断点有效

  • enable breakpount —— 使一个断点有效

  • n(next) —— 逐过程

  • s(step) —— 逐语句

  • bt —— 看到底层函数调用的过程

  • set var—— 修改变量的值

  • p(print) 变量名 —— 打印变量值

  • display —— 跟踪查看一个变量,每次停下来都显示它的值

  • undisplay + 变量名编号 —— 取消对先前设置的那些变量的跟踪

  • until + 行号 —— 进行指定位置跳转,执行完区间代码

  • finish—— 在一个函数内部,执行到当前函数返回,然后停下来等待命令

  • c(continue) —— 从一个断点处,直接运行至下一个断点处

  • quit退出gdb

参考:
【Linux】GDB保姆级调试指南(什么是GDB?GDB如何使用?)

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值