Как вы можете настроить PHP + xDebug + (x) Unit + Eclipse для работы с точками останова в модульных тестах?
-
22-08-2019 - |
Вопрос
Я довольно долго пытался заставить это работать правильно, но безуспешно.В принципе, у меня есть Eclipse (3.3) с инструментами разработки PHP (PDT) и плагином PDT XDebug, а также самым простым плагином eclipse.
То, что я хочу сделать, это отладить код, вызываемый самыми простыми модульными тестами.Самые простые ясно видят XDebug, потому что я могу генерировать отчеты о покрытии кода, но это просто не остановится на точках останова.
Редактировать:Следует добавить, что XDebug и точки останова отлично работают в eclipse, просто не при вызове SimpleTest
Кто-нибудь успешно это настроил?Вокруг много документов для болтовни и мало полезной информации.
Спасибо!
Решение
Убедитесь, что у вас установлена правильная версия XDebug для вашей версии PHP, и добавьте это в самое начало вашего файла php.ini:
[xdebug]
zend_extension=full_path_to_your_xdebug.so
xdebug.default_enable=On
xdebug.remote_enable=On
xdebug.remote_handler="dbgp"
xdebug.remote_host="localhost"
xdebug.remote_port=9000
Затем сделайте apachectl graceful
и a phpinfo
и убедитесь, что XDebug присутствует и активен.Если это так, то все должно работать нормально.Я знаю, что для меня это имеет значение.
Редактировать: Я ответил, прежде чем прочитать вопрос целиком.
перед запуском скрипта вы должны установить переменную окружения;
export XDEBUG_CONFIG="idekey=session_name"
Возможно, это можно было бы сделать с php, но я не могу это протестировать:
putenv('XDEBUG_CONFIG="idekey=session_name"');
Вы должны убедиться, что используемый вами двоичный файл php имеет загруженное расширение XDebug, в моей системе оно есть в модуле apache, но в интерпретаторе CLI по умолчанию его нет, но я специально запускаю разные версии.
Там есть некоторые хорошая документация здесь
Другие советы
Чтобы продолжить ответ Криса, если вы управляете своей производственной средой и средой разработки на одном сервере, было бы неплохо перенести настройки xdebug либо в php include
или к тем из ваших virtualhosts
которые посвящены dev
или testing
окружающая среда :
синтаксис для виртуальных хостингов таков
<virtualHost ....> (...) # Xdebug ENV php_flag xdebug.auto_trace on php_flag xdebug.idekey session_name php_flag xdebug.profiler_enable_trigger 1 php_flag xdebug.(...) (...)