Linux GDB常用调试命令

本文详述了GDB命令调试器在Linux下的应用,包括如何在编译时加入调试信息,启动与退出调试器,以及常用的调试命令如查看代码、设置断点、步进执行等。特别强调了GDB的高效性和命令行操作技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GDB调试器

计算机行业中,无论软件或硬件领域,所有的逻辑问题或异常统称为BUG, 排除故障或处置方案称为DEBUG

常见的DEBUG调试工具主要分为两类, GUI (可视化调试工具,有图形界面) , GDB(命令调试工具)

DEBUG调试工看工具可以让开发者在程序运行时干预, 随心所欲的让程序在任意位置暂停或继续, 暂停时可以设置程序数据或观察程序逻辑, 可以非常方便的查找异常位置,定位错误原因!

两种调试工具的优劣:

GUI(可视化图形调试器)
* 上手较快,使用方便(高度IDE)
* GUI调试工具,开销较大,运行效率较低

GDB(命令调试器)

  • 速度快,开销小,兼容性好,冲突异常问题较少
  • 上手困难,需要了解掌握一系列的调试命令

Linux下使用GDB调试程序, 程序必须包含调试信息,如果某个app不具备调试信息,那么GDB无法调试。

在程序编译时加入调试信息:

gcc *.c -g -o app #-g选项为加入调试信息

启动调试器/退出调试器

gdb application_name #启动调试器程序

#在调试器中可以通过quit退出gdb程序

quit
q
常用GDB调试命令:

GDB调试命令行具备命令记忆功能, 如果一个命令多次使用,无需键入多次,键入一次而后使用ENTER即可重复。
LIST

代码查看命令

list 行号
list 函数名
#支持简写,例如l 行号或l 函数名

START OR RUN

  • start 经典的开始执行调试(默认情况下在main函数暂停,等待调试运行)
  • run 开始执行不调试(全速运行)
#如果程序执行时需要外部参数,那么start和run也要传参
start argv1 argv2
run argv1 argv2
#一次调试中,外部参数可以记录并复用,如果退出gdb,再次启动需要重新传参
#run支持简写 r argv1 argv2

NEXT OR STEP

  • step 逐语句执行代码
  • next 逐过程执行代码
step #支持简写 s
next #支持简写 n

PRINT OR SET VAR

  • printf 可以输出显示数据信息,查看变量等等…
  • set var 可以在调试时修改变量数据
print *(&var) #支持简写 p var
set var flags=6000 #修改变量的值

break

  • break #在指定位置加设断点
  • info breakpoints #显示断点列表,详细信息(包含编号)
  • delete #根据断点编号删除断点
break 行号 #特定的行加设一个断点
break 函数名 #特定函数加设一个断点
#break支持简写 b 16
info breakpoints #查看断点列表
delete 断点编号 #支持简写 d 断点编号

如果使用的是run执行方式,可以直接跳转到断点位置,如果使用的是start,可以通过continue命令跳转到断点位置。

DISABLE OR ENABLE

  • disable 禁用断点
  • enable 启用断点
    ** 如果本次调试不想再某个断点暂停,但是该断点还需要保留,可以使用disable禁用断点**
disable 断点编号
enable 断点编号

TBREAK

  • tbreak 临时断点 启动暂停一次立即删除,该断点是临时的。
tbreak 行号 or 函数名

DISPLAY OR UNDISPLAY

  • display 设置观察(跟踪观察变量)
  • undisplay 取消观察
display var #设置观察成功,观察编号
undisplay 观察编号

跟踪调试父子进程(待写)
跟踪调试多线程(待写)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Bug.Remove()

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

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

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

打赏作者

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

抵扣说明:

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

余额充值