debugging php with xdebug

Post on 25-Feb-2016

67 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

{

Debugging PHP with Xdebug

Stephanie RussellZachary 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

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

DBG FirePHP Gubed PHP_Debug MacGDBp

Competition

Performance Pause program execution Usable with Eclipse, Netbeans,

Notepad++, Chrome, Firefox, etc.

Why Xdebug?

{Let’s dive a little deeper…

How to Xdebug

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

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

Negatives Potential install/configuration nightmare Compatibility issues

Drawbacks

{How it works!

Internals

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 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

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 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 – 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

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.

Internals – Multiple Users

Can specify one IP or multiple users xdebug.remote_host or

If IP not known: xdebug.remote_connect_back

{Be sure to wear your helmet.

Installation

PHP 5 Apache2

First

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

Netbeans Tools > Options > PHP Set debug port = remote_port

Integrate with Netbeans

{Valiantly attempting to avoid Murphy’s law

Demo

{Research is key to success

Resources

http://xdebug.org/docs/remote http://

ubuntuforums.org/showthread.php?t=525257 http://scottfaisal.com/installing-xdebug-on-ubunt

u-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_installationInstallation Resources

http://xdebug.org

Everything Else Resources

top related