asan

发布时间 2023-07-05 14:05:19作者: ho966

参考资料:https://blog.csdn.net/weixin_45396052/article/details/119136109

简介

address sanitizier(地址消毒剂),简称asan, 是一款内存检测工具,可用于检测一下错误:

1、 堆内存、栈内存和全局变量的越界(-fsanitize=address)

2、 已释放内存(野指针)的使用(-fsanitize=address)

3、 内存泄漏(-fsanitize=leak)

4、 作用域外的使用(clang flag -fsanitize-address-use-after-scope)

5、 返回值使用(runtime flag ASAN_OPTIONS=detect_stack_use_after_return=1)

 

GCC版本要求:

       GCC4.8及其以上,若要查内存泄漏(LeakSanitizer),需GCC>=4.9

       ARM版本GCC>=4.9

编译选项:

       -fsanitize=address       内存错误检测

    -fno-omit-frame-pointer 让gcc产生stack frame

    -fsanitize=leak          内存泄漏检测,gcc>=4.9

    -fsanitize=bounds        数组索引越界

设置log文件路径:

    export ASAN_OPTIONS=”/home/1.log”