在 CentOS 上调试 C++ 代码,通常流程是:编译带调试信息 → 使用调试器(gdb)→ 结合日志/工具分析。下面按常见场景一步步说明。
sudo yum install -y gcc gcc-c++ gdb make
CentOS 7/8 通用
若使用 GCC 新版本,可考虑devtoolset
检查版本:
g++ --version
gdb --version
test.cpp#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int main() {
int x = 10;
int y = 20;
int z = add(x, y);
cout << z << endl;
return 0;
}
-g)g++ -g -O0 -o test test.cpp
参数说明:
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉)gdb ./test
进入 gdb 后:
(gdb) run
break main
break test.cpp:6
run
next # 下一步(不进入函数)
step # 进入函数
print x
print z
backtrace
bt
continue
quit
ulimit -c unlimited
./test
生成:
core 或 core.xxx
gdb ./test core
查看崩溃位置:
bt
确保:
CXXFLAGS = -g -O0
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
-g-O2print var 或 info localsset print pretty on
或安装 Python-enabled gdb(现代系统默认支持)
| 工具 | 用途 |
|---|---|
valgrind |
内存泄漏 |
strace |
系统调用 |
perf |
性能分析 |
gdbserver |
远程调试 |
示例:
valgrind ./test
g++ -g -O0 test.cpp -o test
gdb ./test
(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
如果你愿意,可以告诉我:
我可以给你更针对性的调试方案。