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 命令的用法)
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐