在 Ubuntu 下做 C++ 调试,常用组合是 g++/clang + GDB +(可选)VS Code / CMake。下面按“从零到能调试”给你一套实用配置。
sudo apt update
sudo apt install -y build-essential gdb
build-essential:包含 g++、makegdb:命令行调试器可选(推荐):
sudo apt install -y cmake clang valgrind
g++ -g -O0 main.cpp -o main
重点:
-g:生成调试符号-O0:关闭优化(否则变量可能被优化掉)gdb ./main
break main # 在 main 设断点
run # 运行程序
next # 单步(不进函数)
step # 单步(进函数)
print x # 打印变量
backtrace # 查看调用栈
continue # 继续执行
quit # 退出
示例:
(gdb) break 10
(gdb) run
(gdb) print a
sudo snap install code --classic
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}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "build"
}
]
}
tasks.json{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g", "-O0",
"main.cpp", "-o", "main"
]
}
]
}
然后按 F5 就能断点调试。
cmake_minimum_required(VERSION 3.10)
project(demo)
set(CMAKE_BUILD_TYPE Debug)
add_executable(main main.cpp)
构建:
mkdir build && cd build
cmake ..
make
VS Code 里选 CMake 调试即可。
| 工具 | 用途 |
|---|---|
valgrind |
内存泄漏 |
sanitizer |
地址/未定义行为检查 |
cgdb |
更好看的 GDB |
lldb |
clang 调试器 |
示例(Sanitizer):
g++ -g -fsanitize=address main.cpp -o main
❌ 断点不生效
✅ 没加 -g 或开了 -O2
❌ 变量显示 <optimized out>
✅ 用 -O0
❌ VS Code 断不下来
✅ 确认 program 路径正确
如果你愿意,可以告诉我:
我可以直接给你一套完全可复制的配置。