Linux调试器-gdb的使用

debug && release

debug 能调试 有debug信息
release 不能调试 无dubug信息

readelf -S查看文件的二进制构成

在这里插入图片描述
我们只需要过滤出debug信息即可
在这里插入图片描述
发现没有debug信息
所以gcc默认生成的是release
如果想生成debug文件 必须携带-g选项
在这里插入图片描述
这时就有了debug信息
在这里插入图片描述

预备工作

先写一段简单的程序

在这里插入图片描述

使用gdb mytest调试程序在这里插入图片描述

listl 查看代码

我们调试代码的时候肯定是需要查看代码的

l num 查看第num行的代码

在这里插入图片描述

如果无法显示全部代码, 可以直接按enter让文件下翻

在这里插入图片描述

l 函数名 查看某一个函数

在这里插入图片描述

r运行代码

如果我们不打断点, 直接运行代码的话gdb就会像正常运行一样

在这里插入图片描述

那我们怎么给程序打上断电

b 行号 在该行打上断点(break point)

在这里插入图片描述

info b 查看断点信息


在这里插入图片描述

d 断点编号 删除断点

;
在这里插入图片描述
;

注意

如果退出了gdb那么调试时设置的断点等信息就会消失

n逐过程调试(next)

逐过程逐语句的区别就是, 逐过程是会把函数调用直接跳过, 而逐语句是会进入函数内部的

逐语句调试(step)

进行逐语句调试

p查看变量的内容

;
在这里插入图片描述
;

display 变量常显示变量内容


在这里插入图片描述

undisplay 编号删除该编号变量的常显示


在这里插入图片描述

disable 使某个断点无效


在这里插入图片描述

enable 使某个断点生效


在这里插入图片描述

until 行数 让程序直接运行到该行再停下

untile

在这里插入图片描述

finish跑完当前所在的函数

;
在这里插入图片描述
;

c运行到下一个断点(continue)

;
在这里插入图片描述
;

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值