温馨提示×

怎么用Ubuntu调试C++程序

小樊
41
2026-08-17 07:29:09
栏目: 编程语言

在 Ubuntu 上调试 C++ 程序,通常会用到 编译工具(如 g++)调试工具(如 gdb)。下面我从最基础到进阶一步步说明,适合新手到有一定基础的人。


一、准备环境(安装必要工具)

先确保你安装了编译器和调试器:

sudo apt update
sudo apt install build-essential gdb
  • build-essential:包含 g++make
  • gdb:GNU 调试器

检查版本:

g++ --version
gdb --version

二、写一个 C++ 示例程序

创建一个文件 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 << "result = " << z << endl;
    return 0;
}

三、编译(必须加调试信息)

✅ 正确方式(可调试)

g++ -g test.cpp -o test

⚠️ 关键点-g 会生成调试信息,否则 gdb 看不到源码和变量


四、使用 gdb 调试程序

1️⃣ 启动 gdb

gdb ./test

你会看到类似:

(gdb)

2️⃣ 常用 gdb 命令(重点)

✅ 设置断点

break main

或指定行号:

break test.cpp:6

✅ 运行程序

run

✅ 单步执行

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

✅ 查看变量

print x
print z

✅ 查看调用栈

backtrace

✅ 继续执行

continue

✅ 退出 gdb

quit

五、调试示例流程(完整)

gdb ./test
(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
(gdb) step
(gdb) backtrace
(gdb) continue
(gdb) quit

六、调试常见错误

1️⃣ 段错误(Segmentation fault)

gdb ./test
run

程序崩溃后:

backtrace

可以看到是哪一行导致的错误。


2️⃣ 程序直接退出,没反应

✅ 确认是否加了 -g
✅ 确认是否在 main 之前就崩了


七、使用 VS Code 调试(强烈推荐)

如果你不想一直敲 gdb 命令,可以用 VS Code

1️⃣ 安装 VS Code

sudo snap install code --classic

2️⃣ 安装插件

  • C/C++(Microsoft)

3️⃣ 编译时加 -g

g++ -g test.cpp -o test

4️⃣ 配置调试(自动生成)

点击:

Run and Debug → C++ (GDB/LLDB)

VS Code 会生成 launch.json,你可以直接:

  • 设置断点
  • 单步调试
  • 查看变量

比命令行友好很多


八、调试多线程 / STL(进阶)

如果你后面用到:

  • std::vector
  • std::thread
  • std::mutex

可以告诉我,我可以教你:

  • 查看 STL 容器
  • 调试多线程竞争
  • 条件断点
  • 核心转储(core dump)

九、总结一句话

Ubuntu 调试 C++ = g++ -g + gdb(或 VS Code)

如果你愿意,可以把你的 代码 / 报错信息 / 项目结构 发出来,我可以手把手帮你调。

0