Как стать автором
Обновить

Комментарии 20

Идеальное средство для отладки, но настройка и интеграция с IDE…

В PHPStorm от версии к версии IDE меняется мануал по установке стабильно. Ты думаешь, вроде же так ставил и работало, сейчас то что изменилось, почему параметр а надо теперь выставлять, а раньше без него работало. Вот хотелось бы понимания внутренней кухни этих отладлочных интрументов. Куча мануалов (в том числе и на хабре), а конфижить его все равно сложно как-то.
Xdebug настраивается в конфиге PHP и ничего в этом плане не менялось уже кучу лет
Использую PHPStorm уже лет 7-8, и настройки всегда одинаковые (за редким исключением портов и маппинга).
Вы просто настраиваете web application + server и все. Остальное в конфиге PHP.
И тормозит мощно, в разы и до порядка, в зависимости от сложности трассируемой системы. Идеальней некуда :) Есть ли альтернативы?
Не надо его постоянно включенным держать. И надо настроить его что бы профилирование и трассировка включались только по триггерам. Не держать Xdebug на продакшен сервере постоянно включенным.

Для профилирования есть Xhprof. Для мониторинга Pinba.
Именно. Альтернатив трассировщику нет до сих пор.

в качестве профайлера можно взять XHProf, он разрабатывался в том числе и для работы на продакшн окружениях.

В «отключении xdebug» и «переходах по фалам» одна и та же картинка загружена, исправьте
Люблю его. Особенно спасает, когда нужно проверить математику в проекте, как цифры меняются. Всяко проще, чем смотреть вывод обычного var_dump или echo
А с версии xdebug 2.4.0rc2 ребята взяли, и отключили возможность показывать адреса переменных в памяти :( И ничего не предложили в замен… Приходится пользоваться старым xdebug.
ps для тех, кто не понимает о чем я: картинка
А какова практическая польза для этого? (не критика, просто личный интерес)
Полезно при дебаге. Например если в макаронном сложном коде, из цикла в цикл состояние объекта неадекватно меняется, иногда, бывает полезно включить данную функцию, и увидеть, что объект то уже не тот (если поменялся адрес, значит кто-то пересоздал или подменил объект).
С ходу лучше примера не придумаю, но, к сожалению, в легаси коде без этого параметра оч трудно
Можно еще упомянуть про экстеншн для хрома Xdebug helper.

Для включения XDebug при запросе надо передать GET-параметр XDEBUG_SESSION_START=session_name. session_name это любая строка.


Для включения XDebug в консоли надо перед запуском скрипта выполнить команду
export XDEBUG_CONFIG="idekey=session_name"
для Windows
set XDEBUG_CONFIG="idekey=session_name"


Для возможности подключения XDebug достаточно слушать порт 9000, остальное заморочки IDE.


XDebug добавляет некоторый оверхед. Поэтому если идет много ajax-запросов, они могут накапливаться, пока не обработается каждый. Когда окно мигает при подключении, это хорошо заметно, когда не мигает, кажется что все тормозит. На самом деле это просто прошлые запросы обрабатываются. Могут быть не ajax-запросы, а запросы отсутствующих картинок, которые перенаправляются на index.php, который выдает 404. Помогает отключить ненадолго прослушивание порта.

Уже несколько лет пользуюсь вот этой либой для отладки кода. Удобный аналог var_dump. Гараздо более читаемый и юзабельный. Рендер под web и в cli. Удобное отображение ошибок. Удобней чем в xdebug.

аналог var_dump -совершенно верно, но не более.
Гараздо более читаемый и юзабельный. — по сравнению с var_dump.

В xdebug тот же самый вывод можно посмотреть на любом этапе выполнения в IDE + «Evaluate Expression» очень полезный инструмент.

Ох, если бы тот же самый.


  • Выводятся только данные из доступных переменных.
  • Никакой информации о классе (родители, интерфейсы, трейты).
  • Никакой информации о интерфейсе класса (методы публичные и приватные).
  • Никакой информации о доступе к свойствам класса. Свойства есть, но не известно публичные они или приватные и если приватные, то как их получить.
  • Особенно эта проблема ощущается когда проваливаешься по иерархии на 2, 3, 4 и тд уровни.
  • Один из главных минусов xdebug — медленный и забивает диск логами профыйлинга, если явно не указать писать лог в один файл. Что не скажешь о либе которую я привел.
  • Настраивать профайлинг для Web и CLI сложнее чем для либы которую я упомянул (одна строчка в конфиге и все).

Не скажу что xdebug плох. Просто мне лично он на подходит. Хотя бы потому что медленный.


PS: Я не пиарюсь. Это не моя либа.

PS: Я не пиарюсь. Это не моя либа.

Странно, а вот github показывает только вас в авторах коммита. Гитхаб врет?

Врет. Я только выкладывал сорцы по просьбе трудящихся. Автор не я.

Странно, что не упомянули самое главное из-за чего используют Xdebug — возможность расстановки break point в IDE. Лично я без этого как без рук.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации