在 CentOS 上调试 C++ 代码,通常有以下几种常用方式。下面从“准备环境 → 编译 → 调试 → 常见问题”逐步说明。
sudo yum install -y gcc gcc-c++
sudo yum install -y gdb
sudo yum install -y make
-g)一定要加 -g 选项,否则无法调试。
g++ -g -O0 main.cpp -o main
说明:
-g:生成调试信息-O0:关闭优化(避免代码被优化导致调试困难)gdb ./main
| 命令 | 作用 |
|---|---|
run / r |
运行程序 |
break main |
在 main 函数设断点 |
break file.cpp:20 |
在指定行设断点 |
next / n |
单步执行(不进入函数) |
step / s |
单步执行(进入函数) |
continue / c |
继续执行 |
print x / p x |
打印变量 |
backtrace / bt |
查看调用栈 |
quit / q |
退出 GDB |
(gdb) break main
(gdb) run
(gdb) next
(gdb) print a
(gdb) bt
如果程序崩溃:
gdb ./main
run
# 崩溃后
bt
可以定位是哪一行代码出错。
ulimit -c unlimited
./main
gdb ./main core
bt
C/C++ 插件launch.jsonsudo yum install -y cgdb
cgdb ./main
✅ 确认编译时有 -g
print vec
可安装:
sudo yum install -y gdb-gdbinit
建议升级或使用 DevToolset:
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-9
scl enable devtoolset-9 bash
main.cpp
#include <iostream>
using namespace std;
int main() {
int a = 10;
int b = 0;
cout << a / b << endl; // 故意制造错误
}
g++ -g main.cpp -o main
gdb ./main
run
bt
如果你愿意,可以告诉我:
我可以给你更具体的方案。