温馨提示×

如何在CentOS调试C++代码

小樊
38
2026-08-04 02:14:39
栏目: 编程语言

CentOS 上调试 C++ 代码,通常流程是:编译带调试信息 → 使用调试器(gdb)→ 结合日志/工具分析。下面按常见场景一步步说明。


一、准备环境

1. 安装必要工具

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 调试(最常用)

1. 启动调试

gdb ./test

进入 gdb 后:

(gdb) run

2. 常用 GDB 命令

设置断点

break main
break test.cpp:6

运行程序

run

单步执行

next      # 下一步(不进入函数)
step      # 进入函数

查看变量

print x
print z

查看堆栈

backtrace
bt

继续执行

continue

退出

quit

四、调试已崩溃的程序(core dump)

1. 开启 core dump

ulimit -c unlimited

2. 运行程序(让它崩溃)

./test

生成:

core 或 core.xxx

3. 使用 gdb 分析

gdb ./test core

查看崩溃位置:

bt

五、调试 Makefile / CMake 项目

Makefile

确保:

CXXFLAGS = -g -O0

CMake

cmake -DCMAKE_BUILD_TYPE=Debug ..
make

六、调试技巧与常见问题

1. 看不到变量?

  • 确保 -g
  • 不要用 -O2
  • 使用 print varinfo locals

2. STL 容器不好看?

set 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

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ 是 命令行程序 / 后台服务 / crash 问题
  • ✅ 是否使用 CMake / Makefile

我可以给你更针对性的调试方案。

0