docs:mac:builds:xdebug

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.

  • first install apache2, and php
    • (:!: 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
  • for a simple function call dump in php, use one of these lines:
    // make sure the web server can write to this directory, or the
    // file won't show up!!
    xdebug_start_trace(getcwd() . "/trace", XDEBUG_TRACE_APPEND);
    xdebug_start_trace(getcwd() . "/trace");
  • 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
  • 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 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);
  • docs/mac/builds/xdebug.txt
  • Last modified: 2014/02/21 16:06
  • by billh