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 ").