工具1、C++堆栈跟踪打印器,backward-cpp
用于发现和解决段错误的问题,Segmentation fault (core dumped)
https://github.com/bombela/backward-cpp
工具2、Qt Creator启用内存泄漏/越界检查工具
注意:目前仅支持GCC 4.8版本以上编译工具,建议使用GCC 4.9版本以上。不支持MSVC编译器。
0x01 编译选项
- 开启内存泄露检查功能:
-fsanitize=leak
- 开启地址越界检查功能:
-fsanitize=address
- 开启越界详细错误信息:
-fno-omit-frame-pointer
0x02 以Qt工程为例子
.pro
项目文件:
SOURCES += main.cpp
# -fsanitize=leak意思为开启内存泄露检查
QMAKE_CXXFLAGS += "-fsanitize=leak"
QMAKE_CFLAGS += "-fsanitize=leak"
QMAKE_LFLAGS += "-fsanitize=leak"
# -fsanitize=address意思为开启内存越界检查
# -fno-omit-frame-pointer意思为显示更详细的信息
QMAKE_CXXFLAGS += "-fsanitize=address -fno-omit-frame-pointer"
QMAKE_CFLAGS += "-fsanitize=address -fno-omit-frame-pointer"
QMAKE_LFLAGS += "-fsanitize=address"
---
参考文献
https://cloud.tencent.com/developer/article/1784848
https://blog.csdn.net/xiangxianghehe/article/details/103111237
https://cloud.tencent.com/developer/article/1662860