我正在调试一个 PHP 扩展,并在浏览 PHP 源代码时发现了这一点:
#if DEBUG_ZEND>=2
printf("Reducing refcount for %x (%x): %d->%d\n", *zval_ptr, zval_ptr, Z_REFCOUNT_PP(zval_ptr), Z_REFCOUNT_PP(zval_ptr) - 1);
#endif
所以我想在 DEBUG_ZEND 设置为 2 的情况下进行编译。在Zend/zend_compile.h
中,我看到:
#define DEBUG_ZEND 0
我将该值编辑为 2,然后尝试通常的方法:
./configure --enable-debug
make
make
做了一段时间,但后来我看到一堆Reducing refcount for ...
消息然后make
失败了:
make: *** [ext/phar/phar.phar] Error 255
如果我设置DEBUG_ZEND
回 0,PHP 可以正常编译。我能找到的唯一参考DEBUG_ZEND
是在这个错误报告中:
http://bugs.php.net/bug.php?id=45761
这个片段看起来很相关:
我通过在配置命令的开头添加 CFLAGS="-DDEBUG_ZEND=2" 重新配置,做了一个'make clean',然后'make' ...
所以我CFLAGS="-DDEBUG_ZEND=2"
在shebang之后立即添加configure
并能够编译。但是,在运行我的脚本时,我没有看到任何关于引用计数的额外输出,所以我并不真正相信它做了什么。
DEBUG_ZEND
设置为 2编译 PHP 的正确方法是什么?