views:

29

answers:

1

I'm debugging a PHP extension and found this while poking through the PHP source code:

#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

So I want to compile with DEBUG_ZEND set to 2. In Zend/zend_compile.h, I saw:

#define DEBUG_ZEND 0

I edited that value to be 2 instead, and then tried the usual:

./configure --enable-debug
make

make does its thing for awhile, but then I see a bunch of Reducing refcount for ... messages and then make fails:

make: *** [ext/phar/phar.phar] Error 255

If I set DEBUG_ZEND back to 0, PHP compiles fine. The only reference I could find to DEBUG_ZEND was in this bug report:

http://bugs.php.net/bug.php?id=45761

This snippet looked relevant:

I reconfigured by adding CFLAGS="-DDEBUG_ZEND=2" to the start of the configure command, did a 'make clean', then 'make' ...

So I added CFLAGS="-DDEBUG_ZEND=2" right after the shebang in configure and was able to compile. However, I ddin't see any extra output about refcounts when running my scripts, so I'm not really convinced it did anything.

What's the proper way of compiling PHP with DEBUG_ZEND set to 2?

+1  A: 

If you set the environment variable after the configure script it doesn't affect ./configure. You want to set the variable for the configure script.

CFLAGS="-DDEBUG_ZEND=2" ./configure --enable-debug
VolkerK