Download presentation
Presentation is loading. Please wait.
Published byLeonardo Points Modified over 9 years ago
1
{ Debugging PHP with Xdebug Stephanie Russell Zachary Klink
2
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
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
{ Let’s dive a little deeper… How to Xdebug
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 xdebug always 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
{ How it works! Internals
11
With remote debugging, embedded Xdebug in PHP acts as a client, and the IDE acts as a server. Internals – single dev 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 xdebug.remote_host The IDE listens on port 9000, so xdebug.remote_port is set to 9000 xdebug.remote_port The HTTP request is started on the machine running the IDE Xdebug connects to 10.0.1.42:9000 Debugging runs, HTTP Response provided
12
Setup is only slightly different: Internals – multiple dev 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 xdebug.remote_connect_back The IDE listens on port 9000, so xdebug.remote_port is set to 9000 xdebug.remote_port 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
13
Internals – Debug session 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
14
Internals – Debug session 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.
15
Internals – Multiple Users Can specify one IP or multiple users xdebug.remote_host or If IP not known: xdebug.remote_connect_back
16
{ Be sure to wear your helmet. Installation
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
{ Valiantly attempting to avoid Murphy’s law Demo
21
{ Research is key to success Resources
22
http://www.firephp.org/HQ/Use.htm http://www.firephp.org/HQ/Use.htm http://sixrevisions.com/web-development/how- to-debug-php-using-firefox-with-firephp/ http://sixrevisions.com/web-development/how- to-debug-php-using-firefox-with-firephp/ http://sixrevisions.com/web-development/how- to-debug-php-using-firefox-with-firephp/ http://www.php-debugger.com/dbg/ http://www.php-debugger.com/dbg/ http://gubed.mccabe.nu/ http://gubed.mccabe.nu/ http://coding.smashingmagazine.com/2009/01/2 0/50-extremely-useful-php-tools/ http://coding.smashingmagazine.com/2009/01/2 0/50-extremely-useful-php-tools/ http://coding.smashingmagazine.com/2009/01/2 0/50-extremely-useful-php-tools/ http://www.bluestatic.org/software/macgdbp/ http://www.bluestatic.org/software/macgdbp/ Competition Resources
23
http://xdebug.org/docs/remote http://xdebug.org/docs/remote http://ubuntuforums.org/showthread.php?t=525257 http://ubuntuforums.org/showthread.php?t=525257 http://scottfaisal.com/installing-xdebug-on-ubuntu- 10-04/ http://scottfaisal.com/installing-xdebug-on-ubuntu- 10-04/ http://scottfaisal.com/installing-xdebug-on-ubuntu- 10-04/ http://2bits.com/articles/setting-up-xdebug-dbgp- for-php-on-debian-ubuntu.html http://2bits.com/articles/setting-up-xdebug-dbgp- for-php-on-debian-ubuntu.html 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://netbeans.org/kb/docs/php/configure-php- environment-ubuntu.html http://netbeans.org/kb/docs/php/configure-php- environment-ubuntu.html http://wiki.netbeans.org/HowToConfigureXDebug http://wiki.netbeans.org/HowToConfigureXDebug http://stackoverflow.com/questions/693074/how-to- debug-php-with-netbeans-and-xdebug http://stackoverflow.com/questions/693074/how-to- debug-php-with-netbeans-and-xdebug http://stackoverflow.com/questions/693074/how-to- debug-php-with-netbeans-and-xdebug http://blogs.oracle.com/netbeansphp/entry/howto_c heck_xdebug_installation http://blogs.oracle.com/netbeansphp/entry/howto_c heck_xdebug_installation http://blogs.oracle.com/netbeansphp/entry/howto_c heck_xdebug_installation Installation Resources
24
http://xdebug.org http://xdebug.org Everything Else Resources
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.