UNIX及UNIX-like环境下的调试工具gdb使用方法

准备工作

我们首先要将可执行程序变成debug版本。gcc编译器默认是release版本发布,那我们怎么将其变成debug版本呢?只需要在makefile文件中加上-g

debug版本和release版本的区别

先从文件大小初见端倪,debug版本的文件是要比release版本的文件大的

那我们具体如何在Linux环境下调试程序呢?

首先我们需要输入这样的一个命令:gdb+可调式程序名,注意这个程序必须是以debug版本发布的,也就是需要在makefile文件中用-g进行书写。

我们简写r,就可以直接运行程序(run),默认就是跑完了,但我们像调试的的话,需要打断点,那我们怎么打断点呢?

b + 行号就是给这一行打断点

如果有多文件,我们就是文件名+行号也是可以打的

info b用来查看断点

那如何删掉断点呢?

d 断点编号就是删除断点,注意这里的编号并不是行号,是断点的编号!

这里的第一列才是断点的编号

那我们如何禁用断点呢,禁用断点的意思就是,这个断点不使用了,但还会留下痕迹,跟VS编译器里面的空心断点是一样的

在Linux下我们采用disable 编号的形式进行禁用

再启用就是 enable 编号的形式

n 就是逐过程 F10

s 逐语句 F11

p :显示变量的内容和地址

display:变量名/去地址         常显示变量的内容和地址

那如果不想常显示呢?

undisplay + 编号,取消常显示变量的内容和地址

quit就是退出gdb调试

c:从一个断点运行到下一个断点(范围查找)

bt:查看调用堆栈

finish:将一个函数运行结束,就停下来(范围查找)VS编译器中就没有这个功能

until:在一定范围内,直接运行到指定行

set var name = value:修改一个变量的内容(不用改代码,多分枝测试)

总结:

肯定是没有VS图形化界面调试舒服,或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。所谓“尺有所短,寸有所长”就是这个道理。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可涵不会debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值