温馨提示×

centos怎么调试c++程序

小樊
44
2026-10-08 21:56:56
栏目: 编程语言

在 CentOS 上调试 C++ 程序,通常有以下几种常见方式和工具。下面从基础到进阶给你一个完整说明。


一、准备工作(非常重要)

1. 安装编译器和调试器

CentOS 默认可能没有 g++ 和 gdb:

sudo yum install -y gcc-c++ gdb

如果是 CentOS 8 / Stream:

sudo dnf install -y gcc-c++ gdb

验证:

g++ --version
gdb --version

二、编译时开启调试信息(关键)

一定要加 -g 选项,否则无法调试。

g++ -g -O0 main.cpp -o main

说明:

  • -g:生成调试信息
  • -O0:关闭优化(否则变量可能被优化掉)

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

1. 启动 GDB

gdb ./main

2. 常用 GDB 命令

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

示例:

(gdb) break main
(gdb) run
(gdb) next
(gdb) print a
(gdb) backtrace

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

1. 开启 core dump

ulimit -c unlimited

运行程序崩溃后会生成 core 文件。

2. 使用 GDB 分析

gdb ./main core

然后:

bt

可快速定位段错误位置。


五、使用 CGDB(更友好)

类似 GDB,但带代码窗口:

sudo yum install -y cgdb
cgdb ./main

六、使用 Visual Studio Code(推荐新手)

1. 安装

sudo yum install -y code

或手动下载 rpm 安装。

2. 安装插件

  • C/C++
  • C++ IntelliSense
  • GDB

3. 配置 launch.json

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

支持:

  • 断点
  • 变量查看
  • 调用栈

七、性能 / 内存问题调试(进阶)

1. Valgrind(内存泄漏)

sudo yum install -y valgrind
valgrind ./main

2. AddressSanitizer(推荐)

编译时:

g++ -g -fsanitize=address main.cpp -o main
./main

可检测:

  • 内存越界
  • 使用已释放内存

八、常见问题

Q1:GDB 看不到变量?

✅ 确保:

  • 用了 -g
  • 没开 -O2

Q2:没有 core 文件?

ulimit -c unlimited

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

  • CentOS 版本
  • 用的是命令行还是 IDE
  • 具体想调试什么问题(崩溃 / 逻辑错误 / 性能)

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

0 踩