0、ASAN github
https://github.com/google/sanitizers/wiki/AddressSanitizer
1、升级GCC
http://mirrors-usa.go-parts.com/gcc/infrastructure/
2、编译选项
https://gcc.gnu.org/onlinedocs/gcc-6.1.0/gcc/Instrumentation-Options.html#Instrumentation-Options
2.1 编译选项说明
Asan本身在发现错误后处理比较简单--终止进程退出。所以修改asan以支持发现错误后继续运行。经过近一个月的持续改进,发现错误继续运行特性已经相对稳定,无论发现多少内存错误,只要不触发异常,都可继续使用。
<span style="color:#333333"> ASAN_CFLAGS := -fsanitize=address
ASAN_CFLAGS += -fsanitize-recover=address
# conflict to sanitize
ASAN_CFLAGS += -fno-stack-protector
# ASAN_CFLAGS += -fgnu89-inline
# -fvar-tracking is vvvv...very slow
ASAN_CFLAGS += -fno-var-tracking
# minimal debuginfo
ASAN_CFLAGS += -g1
ASAN_LDFLAGS = -fsanitize=address -g1</span>
2.1.1 -fsanitize=address
支持应用程序内存越界检测,可检查全局变量