在 CentOS 上调试 C++ 程序,常用工具如下(从最常用到进阶):
最主流的 C/C++ 调试工具。
sudo yum install -y gdb
g++ -g -O0 main.cpp -o main
gdb ./main
(gdb) run
(gdb) break main
(gdb) next
(gdb) step
(gdb) print var
(gdb) backtrace
(gdb) quit
bt:查看调用栈watch expr:变量监视info locals:查看局部变量set args:设置程序参数比 GDB 更友好,有代码窗口。
sudo yum install -y epel-release
sudo yum install -y cgdb
cgdb ./main
无需额外安装。
gdb ./main
(gdb) layout src
(gdb) layout regs
快捷键:
Ctrl + L 刷新Ctrl + X + A 切换 TUI用于检测:
sudo yum install -y valgrind
valgrind --leak-check=full ./main
比 Valgrind 快,直接在编译期启用。
g++ -fsanitize=address -g main.cpp -o main
./main
可检测:
-fsanitize=leak)适合本地或远程开发。
launch.json{
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"externalConsole": false,
"MIMode": "gdb"
}
| 场景 | 推荐 |
|---|---|
| 普通调试 | GDB |
| 快速定位崩溃 | GDB + core dump |
| 内存问题 | AddressSanitizer / Valgrind |
| 远程服务器 | GDB / CGDB |
| 本地开发 | VS Code + GDB |
ulimit -c unlimited
./main
gdb ./main core
如果你愿意,可以告诉我:
我可以给你一套最适合你环境的调试方案。