在 Ubuntu 上调试 C++ 代码,常见、有效的方式有以下几类,从最常用到进阶给你梳理一下。
g++ -g -O0 main.cpp -o main
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉)gdb ./main
run # 运行程序
break main # 在 main 函数打断点
break 行号 # 在指定行打断点
next # 单步执行(不进入函数)
step # 单步执行(进入函数)
print x # 打印变量
backtrace # 查看调用栈
continue # 继续执行
quit # 退出
示例:
(gdb) break main
(gdb) run
(gdb) next
(gdb) print a
sudo apt install gdb
code .
launch.json{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/main",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
F5 开始调试(可打断点、看变量)set(CMAKE_BUILD_TYPE Debug)
或:
cmake -DCMAKE_BUILD_TYPE=Debug ..
然后:
make
gdb ./your_program
gdb ./main
run
崩溃后:
backtrace
#include <iostream>
std::cerr << "debug: x = " << x << std::endl;
g++ -fsanitize=address -g main.cpp -o main
./main
可检测:
valgrind ./main
strace ./main
✅ Ubuntu + VS Code + gdb + CMake
✅ 编译加 -g -O0
✅ 段错误用 gdb backtrace
✅ 内存问题用 sanitizer / valgrind
如果你愿意,可以告诉我:
我可以给你更针对性的调试示例。