Xdebug
Xdebug is a php debugger. It allows a developer to debug php applications in a similar manner to that of other languages. Clients can connect to xdebug remotely. NetBeans is an example of a remote client.
-
- ( php will need built WITH cli for command line testing, so don't use --disable-cli flag)
- download source from http://www.xdebug.org
- make sure to install the xt.vim file and configure your filetypes as per the xdebug documentation, to gain syntax highlighting and folding in Vim
- view README to see if process has changed
- in the root of the extracted files…
phpize ./configure --enable-xdebug make sudo cp modules/xdebug.so /usr/local/apache2/modules/ sudo chown www:www /usr/local/apache2/modules/xdebug.so
- edit php.ini (if php was built as shown on this wiki, edit or create php.ini in /usr/local/lib)
; set up xdebug zend_extension="/usr/local/apache2/modules/xdebug.so" xdebug.remote_enable=1 xdebug.trace_enable_triger=1 xdebug.trace_output_dir="/tmp" xdebug.trace_output_name="trace.%R" xdebug.profiler_enable_triger=1 xdebug.profiler_output_dir="/tmp" xdebug.profiler_output_name="cachegrind.out.%R" ;xdebug.remote_handler=dbgp ;xdebug.remote_host=localhost ;xdebug.remote_port=9000
- restart apache:
sudo /usr/local/apache2/bin/apachectl -k graceful
- view a phpinfo() page to verify that the xdebug module is loaded
- for typical debugging, you probably want to get helper extensions in Chrome or Firefox which easily set cookies appropriately for debugging, profiling, and tracing; then connect with something like Vdebug for Vim, or with Netbeans
- other settings for function dumps can be tweaked to show passed parameters, return values, etc…
ini_set("xdebug.collect_params", 3); xdebug.collect_includes = On ini_set("xdebug.collect_return", 1); xdebug.show_mem_delta = On
Debugging
- to debug from command line, start a debugging listener client such as Netbeans or XDebugClient and run like this:
php -dxdebug.remote_autostart=On myprogram.php
- Be sure to download Xdebug Helper extension (Chrome), or The easiest Xdebug (Firefox). You then start a listening client and refresh any php page on a server with xdebug installed.
- for more information, see NetBeans or other client documentation on how to debug
xdebug gotchas
xdebug overloads several php functions, so they don't work exactly as they did before.
- var_dump is limited in certain ways by default; one of these items is the maximum children that can be displayed before you get the message “more elements…”; to fix this, set this parameter:
ini_set("xdebug.var_display_max_children", -1);