gdb调试命令


1. 启动与退出

命令 简写 功能说明 示例
gdb <program> - 启动GDB并加载指定的可执行文件进行调试 gdb ./my_program
gdb <program> core - 调试程序及其产生的core dump文件,用于事后分析崩溃原因 gdb ./my_program core
gdb -p <PID> - 附加到一个正在运行的进程进行调试(需有权限) gdb -p 1234
quit q 退出GDB调试环境 (gdb) q
kill - 终止当前正在调试的程序 (gdb) kill

2. 程序执行与流程控制

命令 简写 功能说明 示例
run r 开始运行程序,若设了断点则停在该处 (gdb) r
run <args> r 运行程序并传递命令行参数 (gdb) r -l -a
continue c 继续执行程序,直到下一个断点或程序结束 (gdb) c
next n 单步执行(跳过):执行下一行代码,不进入函数内部 (gdb) n
step s 单步执行(进入):执行下一行代码,若遇到函数则进入 (gdb) s
finish - 继续执行直到当前函数结束,然后暂停 (gdb) finish
until u 执行到指定行,常用于跳出循环 (gdb) u 25
return - 立即从当前函数返回,可指定返回值 (gdb) return 0

3. 断点与监视点管理

命令 简写 功能说明 示例
break b 设置断点,可按行号、函数名设置 (gdb) b main
(gdb) b 15
break ... if cond b 设置条件断点,仅当条件满足时才暂停 (gdb) b 20 if x > 5
tbreak - 设置临时断点,触发一次后自动删除 (gdb) tbreak main
watch - 设置监视点,当变量值被改变时程序暂停 (gdb) watch var
info breakpoints i b 查看所有断点和监视点的信息 (gdb) i b
delete d 删除所有或指定编号的断点 (gdb) d 2 (删除2号断点)
disable - 禁用指定编号的断点(不删除) (gdb) disable 1
enable - 启用已被禁用的断点 (gdb) enable 1
clear - 清除当前位置或指定位置的断点 (gdb) clear main

4. 数据查看与变量操作

命令 简写 功能说明 示例
list l 显示源代码,便于定位 (gdb) l 20
print p 打印变量或表达式的值 (gdb) p var
(gdb) p *ptr
print /x p/x 以十六进制格式打印数值 (gdb) p/x var
display - 自动显示变量,每次程序暂停时都会输出其值 (gdb) display var
undisplay - 取消对变量(按display编号)的自动显示 (gdb) undisplay 1
whatis - 显示变量或函数的类型 (gdb) whatis var
ptype - 显示更详细的类型信息(如结构体定义) (gdb) ptype MyStruct
set variable - 修改程序中变量的值 (gdb) set var x = 10

5. 程序状态分析

命令 简写 功能说明 示例
backtrace bt 查看当前函数的调用栈(调用历史) (gdb) bt
frame f 切换到调用栈中的指定帧,以查看该层局部变量 (gdb) f 1
info locals i locals 显示当前栈帧中所有局部变量的值 (gdb) i locals
info registers i r 显示CPU寄存器的当前值 (gdb) i r
disassemble - 查看当前函数或指定函数的汇编代码 (gdb) disassemble main
x - 按指定格式查看内存中的内容 (gdb) x/10xw 0xAddress