0

我正在调试一个 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 的正确方法是什么?

4

1 回答 1

2

如果在配置脚本之后设置环境变量,它不会影响 ./configure。您想配置脚本设置变量。

CFLAGS="-DDEBUG_ZEND=2" ./configure --enable-debug
于 2010-08-20T21:44:39.377 回答