Debug the PHP interpreter with GDB
I would like to use GDB to step though the C++ code that makes up the php.so Apache extension. I want to 开发者_运维百科see what PHP is doing while it's running a PHP application. Preferably I would use an IDE like Netbeans or Eclipse on a LAMP system.
- You want to get your hands on a debug build of
mod_php
(with symbols) or build your own (configure --enable-debug
) - You should configure your Apache to always keep exactly one worker process instance up (which will be the instance you debug), that is, set
MinSpareServers
,MaxSpareServers
andStartServers
all to 1. Also make sure any timeout parameters are generously set - Use
gdb
or any graphical interface togdb
(such asddd
or Eclipse CDT) to attach to the one and only Apache worker process. Stick a breakpoint in one of the PHP sources etc. and continue. - Point your browser to your webserver and access a PHP page. Your breakpoint will trigger. If you want to wake the debugger at a particular point in your PHP script execution, generate a
SIGTRAP
from PHP andgdb
will normally oblige you.
Have fun!
Maybe you could do that on windows.
However, your best bet is to do this on a Unix box. You will have to compile everything with debugging enabled. GDB will need access to those directories for source.
Then you will have to run apache and then run the process.
In order to give yourself time to attache while you are hitting the PHP/Apache with a browser, add a sleep call in the PHP script. If you ps, you will see the process in the sleep state. Or you could just have it write its process id to a file in tmp before it does the sleep.
精彩评论