Linux中gdb的使用


gdb是有GNU开源组织发布的一款软件,用于在unix/linux环境中使用命令行的方式进行调试程序的工具。

gdb的使用方法

启动gdb之前的准备工作

下载gdb

sudo yum install -y gdb

在输入完root密码之后,就会开始下载gdb,如果已经拥有gdb,则会出现以下提示。

image-20221222142205438

拥有一个带有调试信息的可执行程序

在启动gdb之前,必须要有一个拥有调试信息的可执行程序。

image-20221222141416331

如果对一个无调试信息的程序使用gdb,虽然会执行成功,但是会无法继续后面的动作(例如调试、打断点、step over等等)。同时注意一下会出现这样一句话。

截屏2022-12-22 14.16.28

正式启动gdb

注意:下面所有的操作对象,我用的是我的可调试可执行程序mybin

gdb mybin

在执行完后会出现很多内容,这些内容都是gdb的一些相关信息(版权、许可证等等),需要注意最后一句话,若出现这句话则表明可以正常使用gdb进行调试程序。

截屏2022-12-22 14.34.13

注意:中间的是我的程序mybin的绝对路径。

gdb -q mybin

执行这条命令则不会额外输出gdb的相关信息,但同样会输出上图红框内容。

image-20221222143348359

从最下面的(gdb)后面开始输入指令进行调试操作。

展示源码(要先看到源码才知道接下来的步骤……)

list 行号:若不显式写行号,则默认展示10行内容
list 函数名:若不显式写函数名,则默认从main函数开始展示内容
l 行号
l 函数名

执行l即可,l就是list

小技巧:gdb会默认记录上一次执行的命令,按enter会自动执行该命令(有些可以)。

image-20221222144048199

打断点

break 行号:在改行设置断点
break 函数名:在该函数的开头设置断点
b 行号
b 函数名

执行b即可,b就是break

image-20221222144423212

显示所有断点信息

info breakponits
info break
info b

image-20221222144606136

运行程序

run 
r

执行r即可,r就是run

image-20221222145121125

逐过程(VS中的F10)

next
n

执行n即可,n就是next

一句一句执行,但不进入函数内部。

image-20221222154726907

逐语句(VS中的F11)

step
s

执行s即可,s就是step

一句一句执行,能够进入函数内部。

image-20221222154828414

断点跳转(VS中的F5)

continue
c

执行c即可,c就是continue

image-20221222154516630

显示变量名(暂时)

p 变量名

image-20221222150607945

该方法只能显示一次变量名,不能够再执行程序的过程中持续显示。

显示变量内容(永久)

display 变量名

image-20221222150830043

能够在执行程序的过程中持续显示(但进入到其它函数中则不会显示,重新回来就继续显示)。

取消显示永久变量内容

undisplay 取消显示所有变量
undisplay n 取消显示序号为n的变量

在用display显示变量的时候,前面会有序号。

image-20221222152520140

删除断点

delete breakpoints 删除所有断点
delete break
delete breakpoints n 删除序号为n的断点
delete break n

image-20221222151753218

禁用断点

disable breakpoints 禁用所有断点
disable break
disable breakpoints n 禁用序号为n的断点
disable break n

截屏2022-12-22 15.20.22

启用断点

enable breakpoints 禁用所有断点
enable break
enable breakpoints n 禁用序号为n的断点
enable break n

执行完该函数然后跳到下一步

finish

当在一个函数调用中执行finish时,会自动把该函数执行完然后跳出函数到下一步停下。

image-20221222153208092

跳到某一行

until n 跳到n行

如果中间有断点,则会在断点处停下。

image-20221222153637251

查看函数堆栈

bt

image-20221222153947905

查看当前栈帧局部变量的值

info locals
i locals

image-20221222154151228

退出gdb

quit
q

image-20221222154254521

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云朵c

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

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

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

打赏作者

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

抵扣说明:

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

余额充值