🐞 GDB 调试命令详解:高效掌握常用调试技巧
GNU Debugger(GDB)是 Linux 下最强大的 C/C++ 调试工具。本文将系统梳理 GDB 的常用命令,覆盖运行控制、断点管理、变量查看、线程与进程调试等核心功能,助你快速掌握高效调试技巧。
🎯 一、程序运行与控制
命令 | 简写 | 功能说明 |
---|
run | r | 启动程序运行 |
continue | c | 继续执行到下一个断点 |
next | n | 单步执行,不进入函数 |
step | s | 单步执行,进入函数 |
until | —— | 执行至当前循环结束或指定行 |
finish | —— | 执行至当前函数返回 |
call 函数(参数) | —— | 调用函数 |
quit | q | 退出 GDB |
⛳ 二、断点管理
📍 2.1 设置断点(Breakpoint)
break 42
break main.c:42
break my_func
break func if x==3
🧹 2.2 删除与控制断点
delete 1
disable 1
enable 1
info breakpoints
clear 42
💾 2.3 断点持久化
save breakpoints bp.txt
source bp.txt
🕵️ 三、监视点(Watchpoint)
watch var
rwatch var
awatch var
info watchpoints
set can-use-hw-watchpoints 0/1
🧱 四、查看源代码
list
list 100
list main
📦 五、表达式与变量
命令 | 功能 |
---|
print var / p var | 打印变量值 |
display var | 自动显示变量值 |
whatis var | 查看变量类型 |
info functions | 显示函数信息 |
info locals | 显示局部变量 |
🧠 六、内存与地址
x/3uh 0x54320
- 显示格式:
x
(十六进制)、d
(十进制)、u
(无符号)、c
(字符)、f
(浮点) - 单位大小:
b
(1 字节)、h
(2 字节)、w
(4 字节)、g
(8 字节)
📊 七、程序运行信息
where / bt
up / down
info program
set args arg1 arg2
show args
🪟 八、窗口布局
layout src
layout asm
layout regs
layout split
Ctrl + L
🔀 九、多线程调试
info threads
thread 2
break file:line thread all
thread apply all bt
🧷 线程调度锁
set scheduler-locking on
set scheduler-locking off
set scheduler-locking step
🧬 十、多进程调试
set follow-fork-mode child
set detach-on-fork off
📂 十一、源码路径与信号控制
set substitute-path /old/path /new/path
handle SIGPIPE nostop noprint
stop
:暂停程序nostop
:不暂停print/noprint
:是否输出信息pass/nopass
:是否传递信号给程序
✅ 总结
- 熟练掌握缩写命令(如
r
、n
、s
、p
)能显著提升调试效率。 - 合理使用断点与监视点,可以大大简化定位 bug 的过程。
- 多线程、多进程调试技巧适用于复杂项目环境。