Comments 20
В PHPStorm от версии к версии IDE меняется мануал по установке стабильно. Ты думаешь, вроде же так ставил и работало, сейчас то что изменилось, почему параметр а надо теперь выставлять, а раньше без него работало. Вот хотелось бы понимания внутренней кухни этих отладлочных интрументов. Куча мануалов (в том числе и на хабре), а конфижить его все равно сложно как-то.
С ходу лучше примера не придумаю, но, к сожалению, в легаси коде без этого параметра оч трудно
Для включения 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.
В xdebug тот же самый вывод можно посмотреть на любом этапе выполнения в IDE + «Evaluate Expression» очень полезный инструмент.
Ох, если бы тот же самый.
- Выводятся только данные из доступных переменных.
- Никакой информации о классе (родители, интерфейсы, трейты).
- Никакой информации о интерфейсе класса (методы публичные и приватные).
- Никакой информации о доступе к свойствам класса. Свойства есть, но не известно публичные они или приватные и если приватные, то как их получить.
- Особенно эта проблема ощущается когда проваливаешься по иерархии на 2, 3, 4 и тд уровни.
- Один из главных минусов xdebug — медленный и забивает диск логами профыйлинга, если явно не указать писать лог в один файл. Что не скажешь о либе которую я привел.
- Настраивать профайлинг для Web и CLI сложнее чем для либы которую я упомянул (одна строчка в конфиге и все).
Не скажу что xdebug плох. Просто мне лично он на подходит. Хотя бы потому что медленный.
PS: Я не пиарюсь. Это не моя либа.
Странно, что не упомянули самое главное из-за чего используют Xdebug — возможность расстановки break point в IDE. Лично я без этого как без рук.
Узнать и полюбить Xdebug