Настройка XDebug для отладки в Eclipse IDE
Как настроить отладчик XDebug для использования в Eclipse IDE.
Установка XDebug
pecl install xdebug
Настройка XDebug в php.ini
Добавить следующий конфиг в конец файлов /etc/php5/apache2/php.ini и для консольной отладки /etc/php5/cli/php.ini:
;[xdebug]
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
xdebug.remote_enable=On
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
; Это для автостарта удаленной отладки (не локальной)
;xdebug.idekey=ECLIPSE_DBGP
;xdebug.remote_autostart=On
; Не обязательно
xdebug.show_local_vars=1
;xdebug.var_display_max_depth=7
;xdebug.max_nesting_level=50
;xdebug.var_display_max_children=128
Устанавливать параметры отладки можно также из выполняемого php-скрипта так:
ini_set('html_errors', 1);
Настройка Eclipse
Настройка PHP Executable: Window » Preferences » PHP » PHP Executables, жмем Add:
Name: PHP5.x [XDebug]
Exec Path: /usr/bin/php5
PHP.ini: /etc/php5/cli/php.ini
SAPI Type: CLI (если PHP установлен как модуль Apache?, иначе выбираем "CGI")
PHP Debugger: XDebug
Теперь укажем во вложенной вкладке Execution Environments среду выполнения для каждой версии PHP.
Для этого нужно отметить справа PHP5.x [XDebug]
для всех (необходимых вам) версий PHP.
Редактируем (или добавляем) PHP Server: Window » Preferences » PHP » PHP Servers:
Name: <любое>
Base URL: http://localhost
Local Web Root: /home/stas/www (путь к корню веб-сервера)
Path Mapping: не указывал, т.к. не разобрался с этой опцией
Внимание!
В Eclipse 3.7.1 часто пропадали настройки PHP Executable при окружении: Eclipse 3.7.1 + Kubuntu 11.10 x64.
Задаем настройки отладки по умолчанию, идем в Window » Preferences » PHP » Debug:
PHP Debugger: XDebug
Server: <имя сервера из предыдущего пункта>
PHP Executable: PHP 5.x [XDebug]
Enable CLI Debug: <отметить>
Break at First Line: <я снял отметку - не практично>
Конфигурация PHP Web Page:
Name: DEBUG <любое>
Server Debugger: XDebug
PHP Server: LOCAL
File: /index.php
Не обязательные настройки отладчика XDebug: Window » Preferences » PHP » Debug » Installed Debug, выбираем XDebug и жмем Configure:
Debug Port: 9000 // при конфликте с другими приложениями можно изменить порт (в php.ini тоже)
Accept Remote Session (JIT): localhost // для автозапуска УДАЛЕННОЙ сесии remote_autostart
Остальное на ваше усмотрение. Я не понял зачем задавать путь в URL, поскольку отладка во внутреннем браузере у меня работала только для точки входа /index.php.
Другие файлы, вызывались через роутинг. Похоже нужно настраивать мапинг, но я так и не смог настроить отладку во внутреннем браузере.
Примечание
Для отладки консольных скриптов необходимо установить переменную окружения из консоли:
export XDEBUG_CONFIG="idekey=ECLIPSE_DBGP"
Или прописать переменную ручками в файле /etc/environment:
XDEBUG_CONFIG="idekey=ECLIPSE_DBGP"
Проверьте подключен ли модуль xDebug для CLI:
php -m
Примечание
Чтобы не парится с передачей GET-параметра я прописываю куку с длительным временем жизни для домена, на котором необходимо дебажить проект:
XDEBUG_SESSION = ECLIPSE_DBGP
Отладка будет запускаться при каждой загрузке страницы, если установлены брейк-пойнты (или включена опция "Break at First Line") и запущена отладка в самом Eclipse.
Примечание
Для запуска удаленной (не локальной) отладки из консоли возможно понадобится задать ключ:
php -d xdebug.remote_autostart=On script.php
Примечание
Если после запуска дебагера процесс зависает на 57% (у меня была именно эта цифра) - проверьте еще раз путь к исполняемому файлу. Я создал index.php в корне локального сервера, указал путь к нему и перезапустил отладчик. При этом отладка стартует для любого домена и файла если правильно указана кука XDEBUG_SESSION.
Возможные проблемы:
- Не стартует отладка во внутреннем браузере Eclipse. В других все отлично работает;
- Часто слетают настройки PHP Executable;
- При запуске отладки через PHP Script получаю ошибку: Fatal error: Call to undefined function mysql_connect()..;
#xdebug eclipse ide