在 Ubuntu 下调试 C++ 程序,常见、有效的方式主要有以下几种,按使用频率从高到低介绍:
g++ -g -O0 main.cpp -o main
-g:生成调试信息-O0:关闭优化(否则变量可能被优化掉)gdb ./main
run # 运行程序
break main # 在 main 函数打断点
break file.cpp:20 # 在指定行打断点
next # 单步执行(不进入函数)
step # 单步执行(进入函数)
print x # 打印变量
backtrace # 查看调用栈
continue # 继续执行
quit # 退出
示例:
(gdb) break main
(gdb) run
(gdb) next
(gdb) print a
比 GDB 更友好:
sudo apt install cgdb
cgdb ./main
sudo apt install code
Ctrl+Shift+Dg++ build and debug示例 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"
}
]
}
g++ -g main.cpp -o main
F5 开始调试用于检测:
sudo apt install valgrind
valgrind ./main
更详细:
valgrind --leak-check=full ./main
#include <iostream>
std::cerr << "x = " << x << std::endl;
适合:
-g-O2/-O3 调试backtracethread apply all bt如果你愿意,可以告诉我:
我可以给你更具体的调试方案。