Настройка XDebug для отладки в Eclipse IDE

Категория: 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

категория: IDE