在Linux上使用libasan开发QT程序定位内存问题
了解ASAN
ASAN是Google开发的内存错误检测工具,能检测以下问题:
1、内存泄漏
2、堆栈/全局变量越界访问
3、使用释放后的内存(use-after-free)
4、双重释放(double-free)
5、内存对齐问题
配置QT项目使用ASAN
方法1:通过qmake配置,修改项目的.pro文件:
# 在QT项目.pro文件中添加:
QMAKE_CXXFLAGS += -fsanitize=address -fno-omit-frame-pointer
QMAKE_LFLAGS += -fsanitize=address
方法2:通过CMake配置,在CMakeLists.txt中添加:
add_compile_options(-fsanitize=address -fno-omit-frame-pointer)
add_link_options(-fsanitize=address)
运行时配置
# 设置ASAN_OPTIONS环境变量
export ASAN_OPTIONS=detect_leaks=1:halt_on_error=0
./your_qt_program