在 Ubuntu 上调试 C++ 程序,常见做法是 用 GDB(命令行) 或 VS Code + GDB(图形化)。下面从「编译 → 调试 → 常用工具」一步步说明。
调试前,编译必须加 -g:
g++ -g -O0 main.cpp -o main
说明:
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉,断点不准)gdb ./main
| 功能 | 命令 |
|---|---|
| 设置断点 | break main 或 b 10 |
| 运行 | run / r |
| 单步(进入函数) | step / s |
| 单步(不进函数) | next / n |
| 查看变量 | print x / p x |
| 查看调用栈 | backtrace / bt |
| 继续运行 | continue / c |
| 退出 | quit |
示例:
(gdb) b main
(gdb) r
(gdb) n
(gdb) p a
sudo apt update
sudo apt install g++ gdb
VS Code 插件:
tasks.json(编译).vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g", "-O0",
"main.cpp", "-o", "main"
]
}
]
}
launch.json(调试).vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"preLaunchTask": "build",
"MIMode": "gdb"
}
]
}
然后按 F5 即可调试。
gdb ./main
run
bt
ulimit -c unlimited
./main
gdb ./main core
| 工具 | 用途 |
|---|---|
valgrind |
内存泄漏 / 越界 |
asan |
地址 sanitizer |
gdb |
基础调试 |
示例(AddressSanitizer):
g++ -g -fsanitize=address main.cpp -o main
./main
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")
如果你愿意,可以告诉我:
我可以给你更具体的配置。