PHP extension debugging hack
At work I maintain a handful of custom PHP extensions. When someone reports a problem with one of the extensions, I want to fire up gdb right away and see exactly what is going on. In order to do this, I build a custom php binary with debugging enabled. I leave this binary inside my home directory so as not to affect my installed production php binary. I should now be able to rebuild my custom extensions now with debugging enabled and start debugging. But wait, the configure script rejects the flag.
The problem is that my custom extensions are deployed as shared objects and use phpize to build outside of the php source directory. The makefiles generated by phpize compile against my installed production php header files. The configure script generated by phpize checks against these header files to see if debugging is turned on. If it is not, then it does not let me compile my extension with debugging flags.
The quick and dirty solution I found to this problem is to modify the php_config.h file commonly found in the /usr/local/include/php/main directory. Change the ZEND_DEBUG flag from 0 to 1. There are two defines, make sure to modify both of them. Switch it back to 0 when done with the debug session.
Happy hacking...
April 21st, 2009 - 11:20
Were did you find these informations?
April 21st, 2009 - 12:16
You can read Sara Goleman’s book Extending and Embedding PHP.
She also wrote some articles for Zend. The first of which is here: http://devzone.zend.com/node/view/id/1021
Twitter: hermanradtke