这个系列把 GDB 相关的知识整理成了一条由浅入深的完整路径:从启动 gdb 的第一步开始,经过命令体系、数据查看,进入线程调试与 attach 场景,最后以死锁实战和多进程进阶收尾。全系列 13 篇,按发文时间顺序读即是推荐阅读顺序。
第一阶段:热身与全景
- GDB 查看版本信息:零门槛的第一条命令,也是报 bug 前的必要动作
- 程序调试工具箱:GDB 入门与常用分析工具:GDB 基础用法 + pstack/strace/nm/objdump 等周边工具的全景图
第二阶段:基础与命令体系
- GDB 调试基础:启动、断点与单步执行:按调试一个程序的完整流程展开的主线篇
- GDB 常用命令速查:断点、watch、堆栈、core dump 的命令参考
- GDB 变量查看:print、display 与 watch:数据检查的深化,定位问题的核心手段
第三阶段:线程调试
- GDB 查看线程信息:info threads 与线程标识
- GDB 调试多线程:从创建示例到逐线程调试:thread 切换与 thread apply all
- GDB 锁定调度器:只让一个线程运行:scheduler-locking 三种模式的实验验证
第四阶段:attach 与子进程
- GDB attach 调试已运行的进程:attach/detach 的正确姿势
- GDB attach 报错 Operation not permitted 的解决:ptrace_scope 排错实录
- GDB 调试子进程:follow-fork-mode:fork 后跟父还是跟子
第五阶段:实战与进阶
- GDB 实战:定位多线程死锁:综合运用 attach + 线程 + 堆栈还原等待环
- GDB 调试多线程与多进程进阶:手册级长文,inferior、detach-on-fork、checkpoint 集大成
怎么读这个系列
- 没用过 GDB:按顺序读,热身和基础阶段是后面一切的前提
- 会基本操作:直接跳第三、四阶段(线程与 attach),这是多线程问题排查的日常
- 查现场问题:「实战定位死锁」当模板用,遇到类似现象照着流程走一遍