Xdebug
Xdebug — это расширение для PHP, которое превращает слепую отладку через var_dump() и die() в полноценный контролируемый процесс с точками останова и детальным анализом выполнения кода.
Что даёт
Стандартный PHP исполняет скрипт «насквозь» и при ошибке выдаёт минимум информации. Xdebug встраивается напрямую в интерпретатор PHP и перехватывает управление во время выполнения.
Он заменяет базовый вывод ошибок на подробные трассировки стека (stack trace) с подсвеченными переменными и параметрами функций. Но главная его сила — поддержка протокола DBGP. Через него расширение связывается с IDE (PhpStorm, VS Code) и позволяет приостанавливать выполнение скрипта на любой строчке. Можно на лету смотреть содержимое переменных, менять их значения, шагать внутрь функций и проверять условия без изменения самого кода.
Кроме пошаговой отладки, модуль умеет собирать профили производительности (файлы Cachegrind) и отслеживать покрытие кода тестами (code coverage).
Плюсы в разработке:
- Быстрый поиск багов. Вместо расстановки десятков print_r() по всему коду вы ставите breakpoint в IDE и сразу видите состояние памяти и контекст вызова на нужном шаге.
- Профилирование. Показывает, сколько времени и памяти ушло на каждую конкретную функцию, подсвечивая «узкие места» и лишние циклы.
- Анализ трассировки. Помогает распутать чужой или легаси-код: виден весь путь вызова от точки входа до места, где вылетело исключение.
Как использовать
Xdebug устанавливают через PECL или системный пакетный менеджер, после чего подключают в php.ini.
- Настройка режима (mode). В Xdebug 3 функционал разделен на модули, чтобы не нагружать PHP лишней работой. В php.ini задаётся директива xdebug.mode. Для обычного дебага ставят develop,debug, для поиска просадок по скорости — profile.
- Интеграция с IDE. В редакторе настраивается слушатель порта (по умолчанию 9003). Из браузера или консоли отправляется trigger (например, кука XDEBUG_SESSION или GET-параметр), Xdebug стучится в IDE, и сессия отладки стартует.
- Анализ профилей. Если включен режим profile, расширение генерирует файлы, которые затем открывают в утилитах вроде QCacheGrind или Webgrind для визуализации графа вызовов.
Никогда не оставляйте Xdebug включённым на продакшене. Даже если отключить отладку, активное расширение оверхедом замедляет интерпретатор PHP в 2–5 раз и активно съедает ресурсы сервера. На боевых серверах его либо полностью выключают, либо вовсе не собирают в образ.