C 语言 gdb 调试入门
更新时间:2026-08-26。本文是
languages/c/主题高手层的骨架文档(占位),完整展开将在后续批次补齐。
本文要回答的问题
- gdb 怎么启动?
-g为什么是前提? - 断点、单步、看变量,常用命令有哪些?
- 程序崩了,怎么用 core 文件还原现场?
一、准备与启动
调试的前提是带符号编译:gcc -O0 -g(本站默认,理由见 编译优化行为)。
bash
gdb ./prog # 启动
gdb ./prog core # 分析 core 文件
(gdb) run # 运行
(gdb) break main # 在 main 打断点二、核心命令速查
| 操作 | 命令 |
|---|---|
| 打断点 | break 文件名:行号 / break 函数名 |
| 运行/继续 | run / continue |
| 单步进入/跳过 | step(进函数)/ next(不进入) |
| 查看变量 | print 变量名 |
| 查看栈 | backtrace(或 bt) |
| 看内存 | x/16xb 地址(16 字节十六进制) |
| 条件断点 | break f if x > 10 |
三、崩溃现场还原
- 段错误先看
bt:调用栈最上层就是崩溃点。 - 变量被改:
watch变量,看哪一行动了它。 - core 分析:
gdb ./prog core,即使没有-g也能看栈与寄存器(有-g才能看到行号)。完整手法见 core dump 排查 与 gdb 使用指南。
四、与入门层的衔接
- 断言与防御式编程,见 断言与预定义宏。
- 崩溃信号与 core dump 机制,见 段错误与 core dump。
- 内存类错误用 ASan/Valgrind 更省事,见 ASan 内存检测。
一句话总结
gdb 是 C 的"慢动作回放机":-O0 -g 保现场、break/step/print 看流程、崩了先 bt 再 core——调试三件套:断点、单步、栈回溯。
本文为骨架文档:核心结构已就位,示例代码与实测数据将在后续批次补齐。