Skip to content
This repository has been archived by the owner on Sep 1, 2020. It is now read-only.

Latest commit

 

History

History
22 lines (17 loc) · 762 Bytes

15.22 - 使用 asan 内存检测.md

File metadata and controls

22 lines (17 loc) · 762 Bytes

使用 asan 内存检测

高版本gccclang支持asan内存检测,与valgrind相比asan消耗非常低,甚至可以直接在生产环境中启用asan排查跟踪内存问题。

使用asan特性,必须将PHP也编译为asan,否则运行时会报错。

编译 PHP

执行./configure后,修改Makefile修改CFLAGS_CLEAN 末尾追加 -fsanitize=address -fno-omit-frame-pointer,然后执行make clean && make install

编译 Swoole

phpize
./configure --enable-asan
make
make install

关闭内存泄漏检测

PHPZendVM有较多进程退出时内存释放的逻辑,可能会引起asan误报,可以设置export ASAN_OPTIONS=detect_leaks=0暂时关闭asan的内存泄漏检测。