XAMPP 1.7.3, Eclipse PDT и XDebug - отладка веб-страницы PHP в Eclipse никогда не останавливается на точках останова

Мой веб-сервер разработки в настоящее время является XAMPP 1.7.3 на моем локальном хосте (Win XP).

Я только что установил свой Eclipse 3.6 PDT с помощью XDebug. Это работает нормально, если я отлаживаю файл как "скрипт PHP", но когда дело доходит до отладки его как "веб-страница PHP", XDebug полностью игнорирует точки останова.

Только вручную вставленный xdebug_break() внутри кода останавливает отладчик. Это не очень полезно, если вы хотите использовать условия с точками останова Eclipse.

Вот мой конфиг:

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

Кто-нибудь знает, что я делаю не так?

Заранее спасибо!

3 ответа

Решение

Неправильно заданные пути в Eclipse были проблемой.

Дополнительная информация: Всегда используйте самую последнюю версию XDebug с www.xdebug.org, в версии XAMPP (2.0.6) есть ошибки, в которых переменные были <Uninitialized>, Это было решено в текущей версии 2.1.0.

Это может помочь некоторым людям, которые борются с отладкой в ​​php в eclipse

Конфигурация: - Win7 pro на виртуальной коробке - Eclipse Luna Service Release 2 (4.4.2) с установленным плагином PDT на c: - wamp 2.5 (php 5.5.12, apache 2.4.9)

На рабочем столе:

Нажмите на значок wamp в строке состояния Windows (за пределами затмения, внизу справа от вашего рабочего стола)

  • нажмите PHP> Настройки PHP

    Отметьте Xdebug триггер включения удаленной отладки / профилировщика / профилировщика, пока он не будет отмечен (нужно попробовать несколько раз, прежде чем он заработает, и ошибки могут появиться, но игнорируйте их)

  • нажмите PHP> PHP.ini

    • Добавьте в конце xdebug.remote_port=9001
    • Сохраните и перезапустите все службы Wamp

!!!!ПРЕДУПРЕЖДЕНИЕ!!!! Этот последний шаг, на самом деле, меняет c:/wamp/www/bin/apache/apache2.4.9/bin/php.ini, а не на c:/wamp/www/bin/php/php5.5.12/php.ini, но это все еще работает как описано ранее

В затмении:

Окно> Настройки>PHP> Исполняемый файл PHP

  • Путь к исполняемому файлу c:/wamp/bin/php/php5.5.5.12/php.exe (просмотр)
  • SAPI: CLI

Window> Preferences>PHP> Debug

  • Проверить / установить настройки сервера Zend отладчик
  • Проверьте / установите настройки CLI Xdebug

Окно> Настройки>PHP> Отладка> Установленный отладчик

  • Xdebug Port 9001

Окно> Настройки>PHP> Серверы

  • Отладчик: Zend Debugger

Выберите файл php для отладки, а затем "Выполнить"> "Отладка"> "Конфигурации отладки".

  • дать имя ex mydebugconfig
  • нажмите (значок пустой страницы) Добавить веб-приложение
  • выберите путь к файлу для отладки
  • выберите сервер миниатюр и выберите веб-сервер PHP по умолчанию
  • нажмите Configure и проверьте, выбран ли Zend Debugger
  • выберите миниатюру отладчика и проверьте отладчик сервера Xdebug
  • нажмите Configure и установите / установите порт на 9001 и, наконец, кнопку Debug в том же окне, и она должна работать (по крайней мере, на моей машине, что не так уж и плохо после дня осмотра)

NB. Также можно выбрать файл в левом фрейме обозревателя затмений> Выполнить> Отладка> Конфигурации отладки и создать предыдущий файл mydebugconfig)

Для вашей информации конец файла 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

и конец файла 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

Для всех тех, кто все еще борется с этой проблемой, несколько полезных советов.

Проверьте, какая версия (пакет) Eclipse у вас есть? Оказывается, что пакет Helios имеет некоторые ошибки и не останавливается на точках останова, когда вы отлаживаете приложение как Web Application, Отладка работает только, если вы запускаете ее как PHP Script, Что делает его довольно бесполезным для процесса отладки.

Вам следует либо вернуться к более старому пакету Eclipse для разработчиков Galileo для PHP, либо установить новейшую версию Eclipse Juno (или даже новейшую версию Eclipse Kepler для разработчиков), в которую не встроена поддержка PDT, но вы можете легко добавить ее, используя Help > Install New Software.. (укажите на http://download.eclipse.org/tools/pdt/updates/release).

Сообщается, что эти версии могут быть отлажены как Web Application, уважая точки останова.

Также помните, что Xdebug должен быть запущен как расширение Zend для поддержки точек останова! Другими словами удалить extension=xdebug.so (в Linux или xdebug.dll на винде) строка из вашего php.ini и заменить его на zend_extension=/full/path/to/xdebug.so (в Linux или zend_extension=X:\full\path\to\xdebug.dll на винде). Расширения Zend требуют полного пути, даже если они помещены в /php/ext папка, как обычные расширения PHP. Более подробную информацию об этом вы найдете в FAQ Xdebug (ищите ответ на вопрос " Xdebug загружается только как расширение PHP, а не как расширение Zend ").

Другие вопросы по тегам