Skip to content

以下是 GDB(GNU Debugger)常用命令的表格总结,按功能分类便于查阅:

类别 命令 简写 说明
启动与退出 gdb [可执行文件] 启动 GDB 并加载可执行文件
quit q 退出 GDB
运行控制 run [args] r 开始运行程序(可带参数)
start 启动程序并停在 main 函数开头
continue c 继续运行直到下一个断点或结束
kill 终止正在调试的程序
断点管理 break [位置] b 在指定位置设断点(函数名、行号、地址等)
例:b main, b file.c:10
break [位置] if [条件] 设置条件断点
info breakpoints i b 查看所有断点
delete [编号] d 删除指定编号的断点(不带编号则删除所有)
disable [编号] 禁用断点
enable [编号] 启用断点
单步执行 step s 单步进入(会进入函数内部)
next n 单步跳过(不进入函数)
finish 执行完当前函数并返回
until [位置] u 运行到指定行(常用于跳出循环)
查看信息 list [位置] l 显示源代码(默认当前行附近)
print [表达式] p 打印变量或表达式的值
display [表达式] 每次停住时自动显示表达式的值
info locals 显示当前作用域的局部变量
info args 显示当前函数的参数
info registers i r 显示寄存器内容(需支持)
栈帧操作 backtrace bt 显示调用栈(函数调用链)
frame [编号] f 切换到指定栈帧
up / down 向上调用栈 / 向下调用栈移动一帧
内存与寄存器 x/[数量][格式][单位] 地址 x 查看内存内容
例:x/10wx 0x1234(10 个十六进制字)
set variable var = value 修改变量的值
其他实用命令 help [命令] h 获取帮助
shell [命令] 在 GDB 中执行 shell 命令
set args [参数] 设置程序运行参数(等效于 run 时传参)
show args 显示当前设置的程序参数

💡 提示:

  • 大多数命令支持 Tab 自动补全。
  • 可使用 command [编号] 为断点添加自动执行命令。
  • 使用 layout src(TUI 模式)可分屏显示源码和命令。

gdb -batch -ex "thread apply all bt" -p $PID

解决 GDB 附加进程时的 ptrace 不允许

bash
# 编辑 sysctl 配置文件
sudo vim /etc/sysctl.d/10-ptrace.conf

# 添加以下内容
kernel.yama.ptrace_scope = 0

# 应用配置
sudo sysctl -p /etc/sysctl.d/10-ptrace.conf

基于 VitePress 构建