在 Linux 下用 C++ 开发时,调试通常分为编译配置、运行调试工具和常见调试手段三部分。下面给你一个实用、系统的说明。
使用 g++ / gcc 时,一定要加:
-g # 生成调试符号
-O0 # 关闭优化(否则变量可能被优化掉)
示例:
g++ -g -O0 main.cpp -o main
✅ 推荐(更详细信息):
-g3 -O0
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0")
或:
cmake -DCMAKE_BUILD_TYPE=Debug ..
-Wall -Wextra
gdb ./main
run # 运行
break main.cpp:20 # 断点
next # 单步(不进函数)
step # 单步(进函数)
print x # 打印变量
backtrace # 查看调用栈
continue # 继续执行
quit # 退出
ulimit -c unlimited
./main
gdb ./main core
info threads
thread 2
bt
检测内存泄漏、越界:
valgrind --leak-check=full ./main
常用参数:
--tool=memcheck
--show-leak-kinds=all
编译时开启:
g++ -g -O0 -fsanitize=address main.cpp -o main
运行:
./main
能检测:
strace ./main
适合:
#include <iostream>
std::cerr << "x = " << x << std::endl;
launch.json如果你愿意,可以告诉我:
我可以直接给你对应的调试命令和示例。