KOINS.Studio - Articles - Инсталляция и настройка программ - PHPStorm - Xdebug

Xdebug

Больше о настройках и возможностях Xdebug: https://xdebug.org/docs/

Установка XDebug

  • Скачать библиотеку XDebug http://xdebug.org/download.php

  • Сбросить библиотеку в папку с расширениями PHP (../php/ext).

  • В php.ini добавить:
    [Xdebug]
    zend_extension=php_xdebug.dll
    xdebug.remote_enable=1
    xdebug.remote_log=".../xdebug/log/remote.log (создать соответствующие папки)"
    xdebug.profiler_enable_trigger=1
    xdebug.profiler_output_dir=".../xdebug/profiler (создать соответствующие папки)"
    xdebug.trace_enable_trigger=1
    xdebug.trace_output_dir=".../xdebug/trace (создать соответствующие папки)"
    xdebug.var_display_max_depth=20
    xdebug.var_display_max_children=-1
    xdebug.var_display_max_data=-1
  • Перезапустить Apache.

  • Вызвать phpinfo().

Валидация (не обязательно)

  • Открыть http://xdebug.org/wizard.php

  • Вставить в поле результат phpinfo(). Нажать кнопку Analyse my phpinfo.

  • Получить информацию о конфигурации системы, в которой должно присутствовать Xdebug installed: версия. Если отсутствует - что-то сделано не так. Также не должно быть никаких сообщений о ошибках.

  • Или выполнить валадицию через PhpStorm. Перейти Run > Web Server Debug Validation. В настройках указать название сервера и путь где расположен файлик с phpinfo(). Нажать Validate.

Связь проекта и локального сайта

  • Открываем File -> Settings. Выбираем раздел PHP -> Servers.

  • Добавляем новый сервер указав в качестве хоста название вашего локального сайта, 80-ый порт и дебаггер Xdebug.

  • Обязательно оставляем чекбокс Use path mappings... не отмеченным.

  • Открываем раздел настроек PHP -> Debug.

  • Смотрим, чтобы не было галочки в чекбоксе Force break at the first line when a script is outside of the project.

Запуск отладки/профилирование/трассировка

  • Расставляем точки останова по коду.

  • Открываем проект на настроенном ранее сервере.

  • Включаем нужный нам режим.

  • Включаем прослушку Xdebug в PhpSrorm.

  • Обновляем страницу. Управление передается в PhpStorm. Видим следующую картину.

  • Логи профилировшика и трассировки будут сохранены по настроенным в php.ini адресам (xdebug.profiler_output_dir, xdebug.trace_output_dir).

  • Для просмотра лога профилирования в PhpStorm есть специальное средство которое находится тут: Tools > Analyze Xdebug Profiler Snapshot.

  • По окончанию отладки не забудьте выключить её т.к. включенный режим отладки серьезно влияет на производительность.

Отладка Koins тестов [#]

  • Открываем тест который необходимо отладить.

  • В редакторе жмем правую кнопку. Выбираем пункт Create Run Configuration > выбираем пункт с иконкой php.

  • В открывшемся окне в поле имя дописываем add (не обязательно, необходимо для удобства и понимания).

  • Жмем на кнопку чтобы увидеть диалоговое окно опций интерпритатора.
    Прописываем в нем следующий код: [путь к cli.php] a.test.add [имя тест файла]
    Пример старый репо:\options\a\cli.php a.test.add rs.class.edit.php.load.php
    Пример новый репо:\options\a\cli.php a.test.add Wl\Catalog\Cart\Test\Ajax\locationChange

  • Сохраняем.

  • Открываем окно настроенных конфигураций Run > Edit Configurations...

  • Создаем в нем универсальную конфигурацию с именем Run. Она может указывать на совершенно произвольный файл (без файла не сохраняет).

  • В настройках интерпретатора прописываем следующий код: [путь к cli.php] a.test.run
    Пример:\options\a\cli.php a.test.run
  • Устанавливаем галочку Single instance only.

  • В окне Before launch Жмем + и выбираем Run Another Configuration. Выбираем ранее созданную конфигурацию теста. (конфигураций может быть добавлено столько сколько тестов последовательно вы хотели бы отлаживать :) )

  • Устанавливаем точки останова в тесте(ах).

  • Теперь наша задача заключается в том чтобы запустить скрипт. Для этого открываем  Run > Debug... В появившемся списке выбираем скрипт Run > Debug.

  • В случае если у вас небыло очереди невыполненных тестов (все может быть, из-за этого дебагер не всегда коннектится), то скрипт запустит тест и передаст управление дебагеру.

Last modification: 18.08.17 09:14