温馨提示×

怎么调试Ubuntu C++代码

小樊
43
2026-09-02 08:48:57
栏目: 编程语言

在 Ubuntu 上调试 C++ 代码,常见、有效的方式有以下几类,从最常用到进阶给你梳理一下。


一、最常用:gdb + gcc/g++(命令行调试)

1️⃣ 编译时加上调试信息

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

2️⃣ 启动 gdb

gdb ./main

3️⃣ 常用 gdb 命令

run            # 运行程序
break main     # 在 main 函数打断点
break 行号     # 在指定行打断点
next           # 单步执行(不进入函数)
step           # 单步执行(进入函数)
print x        # 打印变量
backtrace      # 查看调用栈
continue       # 继续执行
quit           # 退出

示例:

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

二、图形界面调试(推荐新手)

✅ VS Code(最推荐)

  1. 安装:
sudo apt install gdb
code .
  1. 安装插件:
  • C/C++
  • C/C++ Extension Pack
  1. 配置 launch.json
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C++ Debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/main",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "miDebuggerPath": "/usr/bin/gdb"
    }
  ]
}
  1. 按 F5 开始调试(可打断点、看变量)

三、使用 CMake 项目调试

CMakeLists.txt

set(CMAKE_BUILD_TYPE Debug)

或:

cmake -DCMAKE_BUILD_TYPE=Debug ..

然后:

make
gdb ./your_program

四、常见调试技巧

✅ 段错误(Segmentation fault)

gdb ./main
run

崩溃后:

backtrace

✅ 打印日志调试

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

✅ 使用 sanitizer(非常强)

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

可检测:

  • 内存泄漏
  • 越界访问
  • 使用已释放内存

五、进阶工具(可选)

  • valgrind:内存检测
valgrind ./main
  • strace:系统调用追踪
strace ./main

六、推荐组合(新人友好)

✅ Ubuntu + VS Code + gdb + CMake
✅ 编译加 -g -O0
✅ 段错误用 gdb backtrace
✅ 内存问题用 sanitizer / valgrind


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

  • 你是命令行党还是 VS Code 用户
  • 是普通程序 / CMake 项目 / 多线程 / 段错误

我可以给你更针对性的调试示例。

0 踩