在 Ubuntu 上调试 C++ 程序,常用且推荐的方式是 g++ + gdb(命令行),或者使用 VS Code / CLion 等图形化工具。下面从基础到进阶逐步说明。
sudo apt update
sudo apt install build-essential gdb
build-essential:包含 g++、makegdb:GNU 调试器验证:
g++ --version
gdb --version
g++ main.cpp
g++ -g -O0 main.cpp -o main
参数说明:
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉)gdb ./main
| 命令 | 作用 |
|---|---|
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
gdb ./main
(gdb) run
崩溃后:
(g::backtrace
可定位崩溃位置。
sudo snap install code
launch.json 示例:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}"
}
]
}
按 F5 启动调试。
sudo apt install valgrind
valgrind ./main
可检测:
<optimized out>✅ 使用 -O0 -g
✅ 检查是否带 -g 编译
info threads
thread 2
如果你愿意,可以:
我可以给你更具体的调试示例。