温馨提示×

centos下c++怎么调试

小樊
49
2026-09-06 03:56:39
栏目: 编程语言

在 CentOS 下调试 C++ 程序,常见做法如下(从最基础到进阶):


一、编译时必须有调试信息

没有 -g,基本没法调试

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

说明:

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

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

1. 启动 GDB

gdb ./main

2. 常用 GDB 命令

run                 # 运行程序
break main          # 在 main 函数打断点
break test.cpp:20   # 在某一行打断点
next                # 单步(不进函数)
step                # 单步(进函数)
print x             # 打印变量
backtrace           # 查看调用栈
continue            # 继续执行
quit                # 退出

3. 程序崩溃时

gdb ./main core
bt

(需要先开启 core dump)


三、开启 Core Dump(非常重要)

临时开启

ulimit -c unlimited

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

gdb ./main core
bt

永久生效(CentOS)

编辑 /etc/security/limits.conf:

* soft core unlimited
* hard core unlimited

四、段错误(Segmentation fault)排查

方法 1:GDB

gdb ./main
run
# 崩溃后
bt

方法 2:AddressSanitizer(强烈推荐)

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

能直接告诉你哪一行内存出错。


五、多线程调试

info threads
thread 2
bt

编译建议:

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

六、日志调试(轻量方案)

适合线上:

#include <iostream>
std::cerr << "x=" << x << std::endl;

或者用 spdlog、glog。


七、图形化调试(可选)

1. CGDB

yum install cgdb
cgdb ./main

2. VS Code(Remote SSH)

  • 安装 C/C++ 插件
  • 使用 gdb 作为调试器

八、常见 CentOS 问题

1. 没有 gdb

yum install gdb

2. 没有 g++

yum install gcc-c++

九、推荐调试组合

✅ 开发阶段

  • -g -O0
  • GDB
  • AddressSanitizer

✅ 线上问题

  • core dump
  • gdb core
  • 日志

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

  • CentOS 版本(7 / 8 / Stream)
  • 是命令行程序还是服务
  • 是崩溃、死循环还是性能问题

我可以给你更具体的调试方案。

0 踩