温馨提示×

centos怎样调试c++代码

小樊
38
2026-10-03 01:29:21
栏目: 编程语言

在 CentOS 上调试 C++ 代码,通常分为编译阶段和运行/调试阶段。下面给你一套比较完整、常用的做法。


一、准备工作

1. 安装编译器和调试工具

sudo yum install -y gcc gcc-c++ gdb make

如果是 CentOS 8 / Stream:

sudo dnf install -y gcc gcc-c++ gdb make

检查版本:

g++ --version
gdb --version

二、编译 C++ 代码(关键:加调试信息)

1. 示例代码

test.cpp

#include <iostream>
using namespace std;

int add(int a, int b) {
    int c = a + b;
    return c;
}

int main() {
    int x = 10;
    int y = 20;
    int z = add(x, y);
    cout << z << endl;
    return 0;
}

2. 编译(必须加 -g)

g++ -g -O0 test.cpp -o test

说明:

  • -g:生成调试信息(非常重要)
  • -O0:关闭优化,方便调试
  • -o test:指定可执行文件名

三、使用 GDB 调试(最常用)

1. 启动 GDB

gdb ./test

2. 常用 GDB 命令

命令 作用
run / r 运行程序
break main 在 main 函数下断点
break test.cpp:10 在指定行下断点
next / n 单步执行(不进函数)
step / s 单步执行(进入函数)
print x / p x 打印变量
backtrace / bt 查看调用栈
continue / c 继续执行
quit / q 退出 GDB

示例:

break main
run
next
print x
step
backtrace

四、调试崩溃(Segmentation fault)

1. 运行程序

./test

如果崩溃:

Segmentation fault (core dumped)

2. 开启 core 文件

ulimit -c unlimited

重新运行程序生成 core 文件:

./test
ls core*

3. 用 GDB 分析 core

gdb ./test core

然后:

bt

即可看到崩溃位置。


五、日志调试(轻量方式)

如果不方便用 GDB:

#include <iostream>
#define DEBUG(x) cout << #x << " = " << x << endl;

int main() {
    int a = 5;
    DEBUG(a);
}

六、使用 VS Code(图形化调试,推荐)

1. 安装

sudo yum install -y code

2. 插件

  • C/C++
  • CMake Tools(可选)

3. 配置 launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C++ Debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/test",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}"
    }
  ]
}

七、常见问题

1. 没有调试信息

✅ 确认编译时加了 -g

2. 优化导致变量看不到

✅ 使用 -O0

3. CentOS 老版本 GDB 太旧

sudo yum install -y devtoolset-9
scl enable devtoolset-9 bash

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

  • CentOS 版本(6 / 7 / 8)
  • 是命令行还是 IDE
  • 是调试崩溃、死循环还是逻辑错误

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

0 踩