Optimized net.sourceforge.phpeclipse.xdebug.php.model.XDebugThread.getStackFrames()
[phpeclipse.git] / net.sourceforge.phpeclipse.help / html / ar04s02.html
1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Setting up the Debugger</title><meta name="generator" content="DocBook XSL Stylesheets V1.71.0"><link rel="start" href="index.html" title="Debugging in PHP Eclipse"><link rel="up" href="ar04.html" title="Debugging a Project On a Web Server Using PHPEclipse and XDebug"><link rel="prev" href="ar04.html" title="Debugging a Project On a Web Server Using PHPEclipse and XDebug"><link rel="next" href="ar04s03.html" title="Conclusion"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Setting up the Debugger</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ar04.html">Prev</a> </td><th width="60%" align="center">Debugging a Project On a Web Server Using PHPEclipse and
2   XDebug</th><td width="20%" align="right"> <a accesskey="n" href="ar04s03.html">Next</a></td></tr></table><hr></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="phpeclipse.debuggingremote.setupdebugger"></a>Setting up the Debugger</h2></div></div></div><p>Before we start debugging, we have to configure a few options so
3     that PHPEclipse and XDebug know where to find various components.</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="phpeclipse.debuggingremote.setupdebugger.interpreterpath"></a>Specifying the PHP Interpreter Path</h3></div></div></div><p>To begin, we must specify the PHP Interpreter Path. This may
4       differ depending on your system. For Windows based systems, this is a
5       path to a file called php.exe. For Linux systems, this is a path to a
6       file simply called php. For Linux systems, this is often in
7       /usr/bin/php. To specify the PHP Interpreter, select Preferences from
8       the Window drop down menu. Open up the PHPEclipse selection and click on
9       XDebug. In the settings pane on the right that appears, enter your debug
10       port and the path to your PHP interpreter. The default debug port for
11       XDebug is 9000, but your system may be setup differently. To verify that
12       9000 is the correct port, find a way to access your phpinfo() page and
13       check the value of xdebug.remote_port. The value of xdebug.remote_port
14       should match the debug port value.</p><div class="figure"><a name="phpeclipse.debuggingremote.xdebugsetup"></a><p class="title"><b>Figure 1. XDebug Configuration Pane</b></p><div class="figure-contents"><div class="screenshot"><div class="mediaobject"><img src="xdebugsetup.png" alt="XDebug Configuration Pane"></div></div></div></div><p><br class="figure-break">When you have entered the appropriate values, click on the OK
15       button.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="phpeclipse.debuggingremote.setupdebugger.debugconfiguration"></a>Creating the Debug Configuration</h3></div></div></div><p>Now that we have configured XDebug, we need to create a debug
16       configuration. This will tell Eclipse how to start the debugger for your
17       project. To do this, select 'Open Debug Dialog' from the Run drop down
18       menu. You will be presented with a list of items which you can debug.
19       Double click on the entry titled 'PHP XDebug Remote Script'. This will
20       create a new configuration and allow you to specify the necessary
21       options. You can provide a name for your debug configuration, and then
22       you must specify the Ide Identification String. You can select anything
23       you want for this string. It is recommended to keep it short and
24       memorable. Ensure that you remember this value for later. In our
25       example, we will use the string firstproject.</p><div class="figure"><a name="phpeclipse.debuggingremote.debugconfigurationremote"></a><p class="title"><b>Figure 2. Debug Configuration Window</b></p><div class="figure-contents"><div class="screenshot"><div class="mediaobject"><img src="debugconfigurationremote.png" alt="Debug Configuration Window"></div></div></div></div><p><br class="figure-break">Once you have selected a configuration name and have chosen
26       an identification string, click on the Pathmap tab. In the pathmap tab,
27       you specify how Eclipse translates local path names to remote path
28       names. To map a path, click on the New button to create a new map. If
29       your web server is located on the same system that Eclipse is running
30       on, both of these paths will be the same. In either case, under Local
31       Path enter the path to the root of your project on the machine that
32       Eclipse is running on. In Remote Path, enter the path to the root of
33       your project on the machine the web server is running on.</p><div class="figure"><a name="phpeclipse.debuggingremote.debugconfigurationremotepathmap"></a><p class="title"><b>Figure 3. Specifying the Path Map from Local to Remote Machine</b></p><div class="figure-contents"><div class="screenshot"><div class="mediaobject"><img src="debugconfigurationremotepathmap.png" alt="Specifying the Path Map from Local to Remote Machine"></div></div></div></div><p><br class="figure-break">Once you have specified the proper pathmap, press the Debug
34       button to begin the debugger.</p><p>You will notice that in contrast to when we were debugging
35       locally, remote debugging will not automatically start your script. It
36       will simply start the debugging and begin listening for connections on
37       the debugging port. To begin our script, we open it up in a web
38       browser.</p><div class="figure"><a name="phpeclipse.debuggingremote.remoteexecution"></a><p class="title"><b>Figure 4. Executing our Script in the Web Browser</b></p><div class="figure-contents"><div class="screenshot"><div class="mediaobject"><img src="remoteexecution.png" alt="Executing our Script in the Web Browser"></div></div></div></div><p><br class="figure-break"></p><p>This doesn't actually start debugging your script. There is no
39       link at this point between your script and the Eclipse debugger. We have
40       to somehow tell PHP to look for the Eclipse debugger for processing
41       instructions. To do this, we have to add a variable to the request
42       string. This variable is called XDEBUG_SESSION_START and its value
43       should match the Ide Indentification String we specified earlier. In
44       this case, our new URL will be
45       http://127.0.0.1/myFirstProject/index.php?XDEBUG_SESSION_START=firstproject.</p><div class="figure"><a name="phpeclipse.debuggingremote.remotedebugxdebugvariable"></a><p class="title"><b>Figure 5. Adding the XDEBUG_SESSION_START onto the Query String</b></p><div class="figure-contents"><div class="screenshot"><div class="mediaobject"><img src="remotedebugxdebugvariable.png" alt="Adding the XDEBUG_SESSION_START onto the Query String"></div></div></div></div><p><br class="figure-break">Once you have added the variable to the URL, press enter to
46       start debugging.</p><p>You can now resume the process of debugging as demonstrated in the
47       local debugging tutorial. The process is the same, except that instead
48       of the output being displayed in the console it is displayed in the
49       browser where you loaded your script.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ar04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ar04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ar04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Debugging a Project On a Web Server Using PHPEclipse and
50   XDebug </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Conclusion</td></tr></table></div></body></html>