CentOS 下 GCC 项目的调试工具选择指南
一、选型总览
二、按场景选择工具
| 场景 | 首选工具 | 关键命令或要点 |
|---|---|---|
| 源码级断点、单步、变量/栈回溯 | GDB | 编译:gcc/g++ -g;启动:gdb ./app;常用:break、run、next/step、print、bt、watch;分析崩溃:gdb ./app core;远程:目标机 gdbserver :2345 ./app,主机 target remote IP:2345 |
| 系统调用与 I/O 问题 | strace | 跟踪全部:strace ./app;过滤:strace -e trace=open,read ./app |
| 动态库函数调用与依赖 | ltrace | ltrace ./app;结合 grep:ltrace ./app |
| 内存泄漏/越界/未初始化 | Valgrind | valgrind –leak-check=full ./app(需编译带 -g) |
| 图形化调试体验 | VSCode + C/C++ 扩展 或 DDD | VSCode:安装 code 与 C/C++ 扩展,配置 launch.json;DDD:sudo yum install ddd,ddd ./app |
| 多线程死锁/竞态 | GDB | info threads、thread N、bt、set scheduler-locking on |
| 需要 LLDB 或 Clang 工具链 | LLDB | 启动:lldb ./app;断点:breakpoint set --file file.c --line N;运行:run;RHEL/CentOS 可通过 LLVM/DevToolset 启用 LLDB |
| 线上问题无调试符号/需事后分析 | 核心转储 + GDB | ulimit -c unlimited;配置 core_pattern;崩溃后用 gdb ./app core 分析,bt full 查看完整栈与局部变量 |
| 以上工具与命令覆盖了 GCC 开发中最常见的调试路径,能应对从功能逻辑到系统/内存/并发等多类问题。 |
三、快速上手流程
四、如何取舍与搭配
五、环境与版本建议