温馨提示×

如何在ubuntu调试c++程序

小樊
57
2026-09-08 09:41:24
栏目: 编程语言

在 Ubuntu 上调试 C++ 程序,常用且推荐的方式是 g++ + gdb(命令行),或者使用 VS Code / CLion 等图形化工具。下面从基础到进阶逐步说明。


一、准备:安装编译和调试工具

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

验证:

g++ --version
gdb --version

二、编译(非常重要)

❌ 错误方式

g++ main.cpp

✅ 正确调试编译方式

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

参数说明:

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

三、使用 GDB 调试(命令行)

1. 启动 GDB

gdb ./main

2. 常用 GDB 命令

命令 作用
run / r 运行程序
break main 在 main 函数断点
break 行号 在指定行断点
break 文件:行号 指定文件断点
next / n 单步(不进函数)
step / s 单步(进入函数)
print 变量 / p x 打印变量
backtrace / bt 查看调用栈
continue / c 继续执行
quit 退出

示例

(gdb) break main
(gdb) run
(gdb) next
(gdb) print x
(gdb) backtrace

四、调试崩溃(Segmentation fault)

gdb ./main
(gdb) run

崩溃后:

(g::backtrace

可定位崩溃位置。


五、使用 VS Code(推荐新手)

1. 安装

sudo snap install code

2. 安装插件

  • C/C++
  • CMake Tools(可选)

3. 配置调试

launch.json 示例:

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

按 F5 启动调试。


六、使用 Valgrind(内存错误)

sudo apt install valgrind
valgrind ./main

可检测:

  • 内存泄漏
  • 越界访问

七、常见问题

Q1:变量显示 <optimized out>

✅ 使用 -O0 -g

Q2:断点不生效

✅ 检查是否带 -g 编译

Q3:多线程调试

info threads
thread 2

如果你愿意,可以:

  • 发一段 C++ 代码
  • 或说明你是 初学者 / 面试 / 项目开发

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

0 踩