温馨提示×

ubuntu中c++如何调试

小樊
47
2026-09-11 08:12:48
栏目: 编程语言

在 Ubuntu 下调试 C++ 程序,常见且推荐的方式是使用 gdb(命令行调试器),配合 gcc/g++ 编译。下面从「编译 → 调试 → 常用技巧」给你一个完整说明。


一、编译时开启调试信息

调试前,必须用 -g 编译,否则看不到变量和行号。

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

说明:

  • -g:生成调试信息
  • -O0:关闭优化(避免代码被重排,方便调试)

二、使用 gdb 调试

1. 启动 gdb

gdb ./main

进入 gdb 后常见操作:

(gdb) run            # 运行程序
(gdb) run arg1 arg2  # 带参数运行

2. 设置断点

break main            # 在 main 函数设断点
break main.cpp:10     # 在第10行设断点
break funcName        # 在某个函数设断点

查看/删除断点:

info break
delete 1

3. 单步执行

next     # 下一步(不进入函数)
step     # 进入函数
continue # 继续执行到下一个断点
finish   # 执行完当前函数

4. 查看变量和调用栈

print x          # 打印变量
print &x         # 打印地址
bt               # 查看调用栈
frame 1          # 切换到指定栈帧

5. 查看段错误(Segmentation fault)

gdb ./main
run

程序崩溃后:

bt

可以快速定位是哪一行导致崩溃。


三、使用 core dump 调试(推荐排错方式)

1. 开启 core dump

ulimit -c unlimited

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

2. 用 gdb 分析

gdb ./main core
bt

四、VS Code + gdb(图形化调试,强烈推荐)

1. 安装

sudo apt install gdb

VS Code 安装:

  • C/C++ 插件
  • 配置 launch.json

2. 示例 launch.json

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

按 F5 即可断点调试。


五、常用辅助工具

  • valgrind:内存错误检测
valgrind ./main
  • addr2line:地址转代码行
addr2line -e main 0x4005b6

六、最小调试示例

#include <iostream>
using namespace std;

int main() {
    int a = 10;
    int b = 0;
    cout << a / b << endl; // 故意制造错误
}
g++ -g -O0 test.cpp -o test
gdb ./test
run
bt

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

  • 是 命令行还是 GUI
  • 是 新手还是进阶
  • 具体遇到什么 bug(段错误 / 逻辑错误 / 多线程)

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

0 踩