1 / 24

Debugging PHP with Xdebug

Debugging PHP with Xdebug. Stephanie Russell Zachary Klink. Free and open source Swiss army knife for PHP developers. Developed by Derick Rethans Written in C Initial release date: May 2, 2002 Stable Release: 2.1.2 ; July 28, 2011. Xdebug. Stack and function traces in error messages

tavon
Télécharger la présentation

Debugging PHP with Xdebug

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Debugging PHP with Xdebug Stephanie Russell Zachary Klink

  2. Free and open source Swiss army knife for PHP developers. • Developed by DerickRethans • Written in C • Initial release date: May 2, 2002 • Stable Release: 2.1.2; July 28, 2011 Xdebug

  3. Stack and function traces in error messages • Full param display for user defined functions • Function name, file name and line number • Support for member functions • Memory allocation • Protection for infinite recursions • Profiling information for PHP scripts • Code coverage analysis • Debugger front-end to interactively debug Features

  4. DBG • FirePHP • Gubed • PHP_Debug • MacGDBp Competition

  5. Performance • Pause program execution • Usable with Eclipse, Netbeans, Notepad++, Chrome, Firefox, etc. Why Xdebug?

  6. How to Xdebug Let’s dive a little deeper…

  7. php.ini • When enabled, xdebug controls program execution. • As a server • GDB and DBGp • Remote control for PHP • Embedded into editor (no direct dealing with protocol itself) How to Xdebug

  8. Modes: • Default: req. Makes xdebugalways connect to client when a script is started. • Second mode: jit. Only connect to the client on a breakpoint or error in script. • No setting in xdebug.remote_mode = default How to Xdebug

  9. Negatives • Potential install/configuration nightmare • Compatibility issues Drawbacks

  10. Internals How it works!

  11. With remote debugging, embedded Xdebug in PHP acts as a client, and the IDE acts as a server. • The IP of the server is 10.0.1.2 with HTTP on port 80 • The IDE is on IP 10.0.1.42, so xdebug.remote_host is set to 10.0.1.42 • The IDE listens on port 9000, so xdebug.remote_port is set to 9000 • The HTTP request is started on the machine running the IDE • Xdebug connects to 10.0.1.42:9000 • Debugging runs, HTTP Response provided Internals – single dev

  12. Setup is only slightly different: • The IP of the server is 10.0.1.2 with HTTP on port 80 • The IDE is on an unknown IP, so xdebug.remote_connect_back is set to 1 • The IDE listens on port 9000, so xdebug.remote_port is set to 9000 • The HTTP request is made, Xdebug detects the IP address from the HTTP headers • Xdebug connects to the detected IP (10.0.1.42) on port 9000 • Debugging runs, HTTP Response provided Internals – multiple dev

  13. Tracks debug session through brower: cookies • URL variable XDEBUG_SESSION_START=name appended to URL • Xdebug emits cookie with name “XDEBUG_SESSION” with value “name.” • This expires in an hour. • DBGp protocol also passes this value to the init packet when connecting to debug client Internals – Debug session

  14. When there is a GET or POST, the cookie is set, xdebug connects to a debug client. • To stop debug session (and destroy the cookie), add URL parameter XDEBUG_SESSION_STOP. • Xdebug not longer tries to connect to debug client. Internals – Debug session

  15. Can specify one IP or multiple users • xdebug.remote_host or • If IP not known: xdebug.remote_connect_back Internals – Multiple Users

  16. Installation Be sure to wear your helmet.

  17. PHP 5 • Apache2 First

  18. Apt-get • Compatibility with PHP release • Find installed xdebug.so • Edit php.ini file to add zend extension. • Remote host/port • Known IP (edit 09/22 or for multiple developers) • Port open Install

  19. Netbeans Tools > Options > PHP • Set debug port = remote_port Integrate with Netbeans

  20. Demo Valiantly attempting to avoid Murphy’s law

  21. Resources Research is key to success

  22. http://www.firephp.org/HQ/Use.htm • http://sixrevisions.com/web-development/how-to-debug-php-using-firefox-with-firephp/ • http://www.php-debugger.com/dbg/ • http://gubed.mccabe.nu/ • http://coding.smashingmagazine.com/2009/01/20/50-extremely-useful-php-tools/ • http://www.bluestatic.org/software/macgdbp/ Competition Resources

  23. http://xdebug.org/docs/remote • http://ubuntuforums.org/showthread.php?t=525257 • http://scottfaisal.com/installing-xdebug-on-ubuntu-10-04/ • http://2bits.com/articles/setting-up-xdebug-dbgp-for-php-on-debian-ubuntu.html • http://netbeans.org/kb/docs/php/configure-php-environment-ubuntu.html • http://wiki.netbeans.org/HowToConfigureXDebug • http://stackoverflow.com/questions/693074/how-to-debug-php-with-netbeans-and-xdebug • http://blogs.oracle.com/netbeansphp/entry/howto_check_xdebug_installation Installation Resources

  24. http://xdebug.org Everything Else Resources

More Related