开发者

XAMPP 1.7.3, Eclipse PDT & XDebug - Debugging a PHP web page in Eclipse never stops at breakpoints

My development web server is currently a XAMPP 1.7.3 on my localhost (Win XP).

I just set up my Eclipse 3.6 PDT with XDebug. It works fine, if I debug a file as a "PHP script", but when it comes to debugging it as a "PHP web page", XDebug ignores the breakpoints completely.

Only a manually inserted xdebug_break开发者_运维问答() inside the code stops the debugger. This isn't very useful, if you want to use conditions with Eclipse's breakpoints.

Here my config:

php.ini:

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_idekey="ECLIPSE_DBGP"

phpinfo()

Zend Engine v2.3.0, Copyright (c)
1998-2009 Zend Technologies
    with Xdebug v2.0.6-dev, Copyright (c) 2002-2009, by Derick Rethans

...

xdebug xdebug support   enabled Version
2.0.6-dev

Supported protocols Revision DBGp -
Common DeBuGger Protocol    $Revision:
1.125.2.7 $ GDB - GNU Debugger protocol     $Revision: 1.87.2.1 $ PHP3 -
PHP 3 Debugger protocol     $Revision:
1.22 $

Directive   Local Value Master Value
xdebug.auto_trace   Off Off
xdebug.collect_includes On  On
xdebug.collect_params   0   0
xdebug.collect_return   Off Off
xdebug.collect_vars Off Off
xdebug.default_enable   On  On
xdebug.dump.COOKIE  no value    no value
xdebug.dump.ENV no value    no value
xdebug.dump.FILES   no value    no value
xdebug.dump.GET no value    no value
xdebug.dump.POST    no value    no value
xdebug.dump.REQUEST no value    no value
xdebug.dump.SERVER  no value    no value
xdebug.dump.SESSION no value    no value
xdebug.dump_globals On  On
xdebug.dump_once    On  On
xdebug.dump_undefined   Off Off
xdebug.extended_info    On  On
xdebug.idekey   no value    no value
xdebug.max_nesting_level    100 100
xdebug.profiler_aggregate   Off Off
xdebug.profiler_append  Off Off
xdebug.profiler_enable  Off Off
xdebug.profiler_enable_trigger  Off Off
xdebug.profiler_output_dir  C:\xampp\tmp    C:\xampp\tmp
xdebug.profiler_output_name xdebug_profile.%p   xdebug_profile.%p
xdebug.remote_autostart On  On
xdebug.remote_enable    On  On
xdebug.remote_handler   dbgp    dbgp
xdebug.remote_host  localhost   localhost
xdebug.remote_log   no value    no value
xdebug.remote_mode  req req
xdebug.remote_port  9000    9000
xdebug.show_exception_trace Off Off
xdebug.show_local_vars  Off Off
xdebug.show_mem_delta   Off Off
xdebug.trace_format 0   0
xdebug.trace_options    0   0
xdebug.trace_output_dir C:\xampp\tmp    C:\xampp\tmp
xdebug.trace_output_name    trace.%c    trace.%c
xdebug.var_display_max_children 128 128
xdebug.var_display_max_data 512 512
xdebug.var_display_max_depth    3   3

Does anyone know what I'm doing wrong?

Thanks in advance!


Wrong set path mappings in Eclipse were the problem.

Additional info: Always use the latest version of XDebug from www.xdebug.org, the version in XAMPP (2.0.6) has some bugs where variables were <Uninitialized>. This got resolved in the current 2.1.0 release.


This "could" be of help for some people who are struggling with debugging in php under eclipse

Config: - Win7 pro on virtual box - Eclipse Luna luna service release 2 (4.4.2) with PDT plugin installed on c: - wamp 2.5 (php 5.5.12, apache 2.4.9)

On the desktop:

Click on windows status bar wamp icon (outside of eclipse, down on the right of your desktop)

  • click PHP> PHP Settings

    Tick Xdebug remote debug / profiler / profiler enable trigger until it appears ticked (need to try few times before it works and errors can appear but ignore them)

  • click PHP> PHP.ini

    • Add at the end xdebug.remote_port=9001
    • Save and restart all wamp services

!!!!WARNING!!!! This last step is changing in fact the c:/wamp/www/bin/apache/apache2.4.9/bin/php.ini NOT the one c:/wamp/www/bin/php/php5.5.12/php.ini but it still works as described previously

In eclipse:

Window>Preferences>PHP>PHP Executable

  • Executable path c:/wamp/bin/php/php5.5.5.12/php.exe (browsed)
  • SAPI: CLI

Window>Preferences>PHP>Debug

  • Check/set server settings Zend debugger
  • Check/set CLI settings Xdebug

Window>Preferences>PHP>Debug>Installed Debugger

  • Xdebug Port 9001

Window>Preferences>PHP>Servers

  • Debugger: Zend Debugger

Select php file to debug and then Run>Debug>Debug Configurations

  • give a name ex mydebugconfig
  • click (blank page icon) Add Web Application
  • select path to the file to debug
  • select thumbnail Server and select Default PHP Web server
  • click Configure and check if Zend Debugger is choosen
  • select thumbnail Debugger and check Server Debugger Xdebug
  • click Configure and check/set port to 9001 and finally Debug button in the same window and it should work (at least on on my machine what is not too bad after a day of looking around)

NB: It's also possible to select file on the left eclipse explorer frame > Run > Debug > Debug Configurations and the previous mydebugconfig created)

For your information end of file c:/wamp/www/bin/apache/apache2.4.9/bin/php.ini

; XDEBUG Extension

zend_extension = "c:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll"
;
[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/wamp/tmp"
xdebug.show_local_vars=0

and end of file c:/wamp/www/bin/apache/apache2.4.9/bin/php.ini

; XDEBUG Extension

zend_extension = "c:/wamp/bin/php/php5.5.12/zend_ext/php_xdebug-2.2.5-5.5-vc11.dll"
;
[xdebug]
xdebug.remote_enable = On
xdebug.profiler_enable = On
xdebug.profiler_enable_trigger = On
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/wamp/tmp"
xdebug.show_local_vars=0
xdebug.remote_port=9001


For all those, that are still fighting with this problem, some handy tips.

Check which version (package) of Eclipse you have? It turns out, that Helios package has some bugs and doesn't stops on breakpoints, when you debug your application as Web Application. Debugging works only, if you run it as PHP Script. Which makes it pretty useless for debugging process.

You should consider either reverting to older Galileo Package Eclipse for PHP Developers or installing newest Eclipse Juno (or even newest developer version of Eclipse Kepler), which doesn't have PDT support build in, but you can easily add it to then, using Help > Install New Software.. (point it to http://download.eclipse.org/tools/pdt/updates/release).

These versions are reported to be able to debug as Web Application, respecting breakpoints.

Also, remember, that Xdebug must be run as Zend Extension in order to support breakpoints! In other words remove extension=xdebug.so (on Linux or xdebug.dll on Windows) line from your php.ini and replace it with zend_extension=/full/path/to/xdebug.so (on Linux or zend_extension=X:\full\path\to\xdebug.dll on Windows). Zend extensions requires full path, even if they're put into /php/ext folder, as regular PHP extensions. You'll find more info on this in Xdebug FAQ (look for an answer to "Xdebug is only loaded as PHP extension and not as a Zend Extension" question).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜