使用 asan 内存检测
最后更新于:2022-04-02 06:41:04
# 使用 asan 内存检测
[TOC]
高版本`gcc`和`clang`支持`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
~~~
## 关闭内存泄漏检测
`PHP`的`ZendVM`有较多进程退出时内存释放的逻辑,可能会引起`asan`误报,可以设置`export ASAN_OPTIONS=detect_leaks=0`暂时关闭`asan`的内存泄漏检测。
';