gdb常用指令

GDB(GNU Debugger)提供了丰富的调试命令,涵盖代码运行、断点管理、变量查看、堆栈分析等多个方面。以下是 GDB 的所有主要调试命令,按类别分类:


1. 启动和退出

命令 说明
gdb program 调试可执行文件 program
gdb --args program arg1 arg2 传递参数给 program
gdb -p PID 附加到进程 PID
q / quit 退出 GDB

2. 运行程序

命令 说明
r / run [args] 运行程序,可传递参数
start 启动程序并停在 main() 之前
kill 终止正在调试的程序

3. 断点(Breakpoints)

命令 说明
b / break func_name 在函数 func_name 处设置断点
b line_number 在当前源文件的 line_number 处设置断点
b file:line 在指定文件 fileline 行处设置断点
b *address 在内存地址 address 处设置断点
info breakpoints 显示所有断点
delete [num] 删除编号为 num 的断点(默认删除所有断点)
clear func_name 清除函数 func_name 的断点
clear file:line 清除 file 文件 line 行的断点
enable [num] 启用编号为 num 的断点
disable [num] 禁用编号为 num 的断点
condition num expr 仅当 expr 为真时,触发编号为 num 的断点

4. 观察点(Watchpoints)

命令 说明
watch var 监视变量 var 变化时暂停
rwatch var 变量 var 被读取时暂停
awatch var 变量 var 被读/写时暂停
info watchpoints 显示所有监视点
delete watch num 删除编号为 num 的监视点

5. 单步执行(Stepping)

命令 说明
s / step 单步执行代码(进入函数内部)
n / next 单步执行代码(不进入函数内部)
finish 运行到当前函数返回
until 运行到当前代码块结束

6. 继续执行

命令 说明
c / continue 继续执行到下一个断点
jump line 跳转到 line 行执行

7. 堆栈(Stack)

命令 说明
bt / backtrace 显示当前调用栈
bt full 显示完整的调用栈(包含参数和变量)
frame num 切换到编号 num 的栈帧
up 向上移动一层栈帧
down 向下移动一层栈帧

8. 打印变量

命令 说明
p / print expr 打印表达式 expr 的值
ptype var 显示变量 var 的类型
whatis var 显示变量 var 的类型
x addr 以十六进制格式查看 addr 处的内存
x/4x addr 以十六进制显示 addr 处的 4 个单位数据

9. 寄存器

命令 说明
info registers 显示所有寄存器的值
p $eax 打印寄存器 eax 的值

10. 信号(Signals)

命令 说明
handle SIGSEGV stop SIGSEGV 信号触发时暂停
handle SIGINT nostop 忽略 SIGINT 信号

11. 调试共享库

命令 说明
info sharedlibrary 显示加载的共享库
set solib-search-path path 设置共享库搜索路径

12. 修改变量

命令 说明
set var = value 修改变量值
set $eax = 0x1234 修改寄存器值

13. 附加进程

命令 说明
attach PID 附加到进程 PID
detach 断开调试进程

14. 线程调试

命令 说明
info threads 显示所有线程
thread num 切换到 num 号线程
thread apply all cmd 对所有线程执行 cmd

15. 脚本

命令 说明
source file 运行 file 中的 GDB 命令
define cmd 自定义命令
document cmd 添加自定义命令的文档
save breakpoints file 将断点信息保存到 file

16. GDB 调试 TUI 模式

命令 说明
layout src 显示源码窗口
layout asm 显示汇编窗口
layout regs 显示寄存器窗口
tui enable 启用 TUI 模式
tui disable 禁用 TUI 模式

gdb常用指令
https://liaohr9.github.io/2025/08/04/技术分享/gdb常用指令/
Author
Haoran Liao
Posted on
August 4, 2025
Licensed under