Linux开发工具【gdb】

Linux开发工具【gdb】

程序的发布方式有两种,debug模式(调试版本)和release模式(发布版本)。Linuxgcc/g++出来的二进制程序,默认是release模式。无法保证我们的代码有时候会出现问题,这时就要使用Linux的调试器gdb进行调试,下面我们就来讲讲gdb的使用

1. 可调试文件

上面说过gcc/g++默认会生成release版本的可执行程序,我们可以使用指令来查看可执行程序中是否有调试信息

readelf -S 可执行程序 | grep -i debug	//查看可执行程序中的调试信息

这里我们会发现什么信息都没查到

要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

完成这一操作直接在Makefile文件中做出修改即可

再次生成可执行程序就可以看到调试信息了

2. gdb调试操作

没有gdb的话可以自行下载

sudo yum install -y gdb  //安装gdb

2.1 进入与退出调试

生成可调试文件后,使用指令gdb 可调试文件名即可进入调试

gdb 可调试文件名  //进入调试

出现(gdb)标志了就表示进入gdb

使用q指令就可以直接退出gdb调试

q  //退出gdb调试

2.2 查看代码

通过l/list指令查看代码,查看代码的时候不会影响到其他调试指令

l/list	   //默认查看代码中间的十行
l/list 1   //从代码第一行开始查看其前后十行

还可以使用指令list/l 函数名来列出该函数的源代码

==注意:==所有查看内容的指令并不会影响调试的指令

2.3 运行和断点

指令r/run可以运行程序,没有断点的话程序会直接运行出结果

r/run  //运行程序

使用指令b/break 行号/函数名可以在程序中设置断点

b/break 行号	//在指定行号设置断点
b/break 函数名  //在指定函数设置断点

使用指令info b/break可以查看所有断点信息

info b/break  //查看所有断点信息

Num这一列就是表示断点的编号,它会一直累加,直到调试结束

使用指令d 断点编号可以取消断点

d 断点编号  //取消指定断点

有了运行和断点下面我们就可以进行调试了

2.4 单行和单步调试

使用指令n/next进行单行调试,单行调试就是逐过程调试,向下调试的时候不会进入函数内部

n/next  //单行调试

使用指令s/step进行单步调试,单行调试就是逐语句调试,向下调试的时候会进入函数内部

s/step  //单步调试

2.5 常用调试指令

gdb的使用门槛较高,需要多加练习,下面附上一些gdb常用调试指令,没列举到的大家可以自行查阅资料,希望能给大家带来帮助

list/l 行号             //显示源代码,接着上次的位置每次十行往下列

list/l 函数名           //列出某个函数的源代码

r/run 			        //运行程序

s/step 					//逐语句(进入函数)

n/next 					//逐过程(不进入函数)

break/b 行号 			  //在改行设置断点

info break			   //查看断点信息

d/delete n 			   //删除序号为n的断点

d/delete               //删除所有断点

disable breakpoint n   //禁用序号为n的断点

enable breakpoint n    //启用序号为n的断点

breaktrace/bt          //查看各级函数调用及参数

p 变量名                //打印变量值

set var 表达式(比如:i = 100)  //修改变量的值

display 变量名          //跟踪查看一个变量,每次停下来都显示它的值(长显示)

undisplay 序号          //取消序号对应的变量的跟踪

until 行号              //跳转到对应的行号所在行,执行完区间代码

finish 				   //进入一个函数执行完该函数就停下来

continue/c 			   //从一个断点处直接运行至下一个断点处

q/quit 				   //退出gdb调试器

Linux开发工具gdb,到这里就介绍结束了,本篇文章对你由帮助的话,期待大佬们的三连,你们的支持是我最大的动力!

文章有写的不足或是错误的地方,欢迎评论或私信指出,我会在第一时间改正

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

茉莉蜜茶v

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

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

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

打赏作者

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

抵扣说明:

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

余额充值