在 Ubuntu 上调试 C++ 程序,常见且推荐的方式是使用 g++/gcc + gdb,也可以配合 IDE 或可视化工具。下面从基础到进阶给你一个完整说明。
调试的前提是编译时生成调试符号。
g++ -g -O0 main.cpp -o main
说明:
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉,难以调试)gdb ./main
进入 GDB 后常见操作:
(gdb) run # 运行程序
(gdb) break main # 在 main 函数下断点
(gdb) break 20 # 在第 20 行下断点
(gdb) break funcname # 在函数下断点
(gdb) next # 单步执行(不进入函数)
(gdb) step # 单步执行(进入函数)
(gdb) print x # 打印变量
(gdb) backtrace # 查看调用栈
(gdb) continue # 继续执行
(gdb) quit # 退出
gdb ./main
(gdb) run
崩溃后:
(gdb) backtrace
可定位是哪一行导致段错误。
sudo apt install cgdb
cgdb ./main
比 gdb 更适合初学者。
sudo apt install g++ gdb
VS Code 安装:
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",
"preLaunchTask": "build"
}
]
}
cmake -DCMAKE_BUILD_TYPE=Debug .
make
gdb ./your_program
CMakeLists.txt 示例:
set(CMAKE_BUILD_TYPE Debug)
assert(condition);valgrind 查内存问题:sudo apt install valgrind
valgrind ./main
| 场景 | 推荐方式 |
|---|---|
| 命令行调试 | gdb / cgdb |
| 图形化 | VS Code |
| 内存问题 | valgrind |
| 工程化 | CMake + gdb |
如果你愿意,可以告诉我:
我可以直接给你对应的调试步骤。