温馨提示×

ubuntu c++怎样调试程序

小樊
43
2026-09-02 08:50:58
栏目: 编程语言

在 Ubuntu 下用 C++ 调试程序,通常分为 编译带调试信息 → 使用调试器 → 常见调试手段 几个步骤。下面给你一套实用流程。


一、编译时加上调试信息

g++ 编译时一定要加 -g

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

说明:

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

如果是 CMake 项目:

cmake -DCMAKE_BUILD_TYPE=Debug ..
make

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

1. 启动 GDB

gdb ./main

2. 常用 GDB 命令

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

示例:

(gdb) break main
(gdb) run
(gdb) n
(gdb) p x
(gdb) bt

三、程序崩溃(Segmentation fault)怎么调

  1. 运行程序,记下崩溃位置
  2. 用 GDB:
gdb ./main
run

崩溃后输入:

bt

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


四、Core Dump 调试(推荐)

1. 开启 core dump

ulimit -c unlimited

运行程序后生成 core 文件。

2. 用 GDB 分析

gdb ./main core
bt

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

1. 安装

  • gdb
  • VS Code
  • C/C++ 插件

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"
    }
  ]
}

然后直接点“调试”。


六、其他辅助调试方法

1. 打印调试(最简单)

std::cout << "x = " << x << std::endl;

2. 静态检查

sudo apt install cppcheck
cppcheck main.cpp

3. 内存错误检测(非常强)

sudo apt install valgrind
valgrind ./main

七、推荐组合

  • 新手:cout + gdb
  • 进阶:gdb + core dump
  • 工程级:VS Code + GDB + Valgrind

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

  • 你是 命令行还是 VS Code
  • 段错误 / 逻辑错误 / 多线程问题

我可以给你更具体的调试示例。

0