linux gdb调试常用命令手册

GDB 是 Linux 下主流的程序调试工具,能实现启动程序、设置断点、查看变量、跟踪代码等核心调试功能。以下按调试流程分类整理常用命令,包含缩写、用法和示例,方便日常查阅使用:

1. 基础启动与退出

这类命令用于开启调试、运行程序和退出调试环境,是调试的起点和终点。

命令(缩写)功能说明示例
gdb <程序名>启动 GDB 并加载指定可执行程序(需编译时加-g参数生成调试信息)gdb test(调试 test 程序)
run(r)运行调试的程序,可带参数传递给程序r 10 20(以 10 和 20 为参数运行程序)
set args <参数>为程序预设运行参数set args input.txt(预设程序读取 input.txt)
quit(q)退出 GDB 调试环境直接输入q即可退出
kill强制终止当前调试的程序,保留 GDB 环境程序卡死时输入kill终止运行

2. 断点与观察点操作

断点用于让程序在指定位置暂停,观察点用于监控变量或表达式的变化,是调试核心操作。

命令(缩写)功能说明示例
break(b)在指定位置设置断点b 20(第 20 行设断点)、b main(main 函数入口设断点)、b test.c:15(test.c 第 15 行设断点)、b 30 if i==100(i 等于 100 时第 30 行断点触发)
tbreak设置临时断点,命中一次后自动删除tbreak init(init 函数临时断点)
info breakpoints(info b)查看所有断点信息,含编号、位置等info b(列出所有断点详情)
delete(d)删除断点,无参数时删除所有断点d 1(删除编号为 1 的断点)
disable/enable禁用 / 启用断点,断点信息不删除disable 2(禁用编号 2 的断点)、enable 2(重新启用)
watch设置观察点,变量值变化时暂停watch sum(监控 sum 变量的值变化)
rwatch变量被读取时程序暂停rwatch key(读取 key 变量时暂停)
awatch变量被读或写时程序暂停awatch count(读写 count 变量均暂停)

3. 代码单步与流程控制

用于逐步执行代码,精准跟踪程序执行路径,定位代码逻辑问题。

命令(缩写)功能说明示例
next(n)单步执行,不进入函数调用n(逐行执行,跳过函数内部)
step(s)单步执行,进入函数调用(需有调试信息)s(执行到函数调用时进入函数体)
stepi(si)/nexti(ni)单步执行机器指令,前者进入指令级函数si(查看汇编指令级的单步执行)
continue(c)从断点处继续运行,直到下一个断点或程序结束c(断点暂停后恢复运行)
finish执行完当前函数并返回,显示返回值在函数内输入finish,直接执行到函数返回
until(u)执行到当前循环结束或指定行u 50(直接运行到第 50 行)
return强制当前函数返回,可指定返回值return 0(让当前函数直接返回 0)

4. 数据查看与修改

用于调试时查看变量、内存、类型等信息,也可动态修改变量值验证逻辑。

命令(缩写)功能说明示例
print(p)打印变量或表达式的值,支持指定格式p a+b(打印 a+b 结果)、p /x num(十六进制显示 num)
display程序每次暂停时自动显示指定变量display index(每次暂停都显示 index 的值)
undisplay删除自动显示设置undisplay 1(删除编号 1 的自动显示项)
list(l)显示源代码,默认每次 10 行l 30(显示第 30 行附近代码)、l func(显示 func 函数代码)
backtrace(bt)查看函数调用栈,明确执行路径bt(列出当前函数及上层调用函数的层级关系)
frame(f)切换函数调用栈帧f 1(切换到调用栈中编号 1 的函数)
info locals查看当前函数的所有局部变量进入函数后输入info locals查看局部变量值
info args查看当前函数的参数及对应值在函数内输入info args查看参数信息
whatis/ptype查看变量类型,后者显示复杂类型详情whatis struct data(查看结构体类型)、ptype data(显示结构体成员)
x查看指定地址的内存内容x/4xw $esp(查看 esp 寄存器起始的 4 个 4 字节内存,十六进制显示)
set修改变量值set count=5(将 count 变量改为 5)

5. 其他辅助命令

命令(缩写)功能说明示例
disassemble(disas)查看函数的汇编指令disas main(显示 main 函数的汇编代码)
shell在 GDB 中执行 Linux shell 命令shell ls(列出当前目录文件)
help(h)查看命令帮助信息help watch(查看 watch 命令的用法)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DeeplyMind

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

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

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

打赏作者

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

抵扣说明:

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

余额充值