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

XDebug — если при отладке вам надоели echo(), var_dump() и print_r(). Часть 1.

Время на прочтение 2 мин
Количество просмотров 4.5K
XDebug — мощное расширение для отладки php-скриптов, которое написал норвежец Дерик Ретанс (Derick Rethans, www.derickrethans.nl, project leader for the eZ components). Работает как под Windows, так и под Linux, поддерживает версии PHP 4.4.1+, PHP 5.1.2+, PHP 5.2.1+.

Данное расширение предоставляет следующую информацию:
— стэк вызовов функций
— распределение памяти (memory allocation)
— профайлинг
— и т.п.
XDebug, в первую очередь, — хороший и легкий в установке профайлер, помогающий разработчику найти «узкие места» в коде, определить какие части вашего кода работают медленно: запросы к БД, подключение файлов, парсинг чего-либо и т.д.

Профайлинг (от англ. profiling) — оценка времени выполнения кода.

На текущий момент существует две версии профайлера: XDebug и XDebug2. Отличаются они форматом профайл-лога и богатством настроек. Первая версия попроще, настроек мало, формат лога читабельный.

Пример профайл-лога для XDebug (версия 1):

Пример профайл-лога для XDebug (версия 1)

Формат лога:
— Time Taken (время выполнения)
— Number of Calls (кол-во вызовов функции)
— Function Name (имя функции)
— Location (месторасположение с номером строки)
— Total Time (общее время выполнения)
Также существует 8 режимов профайлинга. Описывать не буду, можно посмотреть здесь.

XDebug2 на мой взгляд более интересен, так как позволяет просматривать профайл-лог через специальные утилиты: WinCacheGrind (для Windows) и KCacheGrind (для Linux).

WinCacheGrind, просмотр результатов профайлинга

KCacheGrind — более мощная утилита, позволяет визуализировать результаты.

KCacheGrind - более мощная утилита, позволяет визуализировать результаты (Linux)

Все настройки профайлера можно разделить на несколько секций:
— основные настройки (GENERAL SETTINGS)
— настройки вывода (DISPLAY SETTINGS)
— настройки трэйсинга (TRACING SETTINGS)
— настройки удаленной отладки (REMOTE DEBUGGER SETTINGS)
— настройки профайлинга (PROFILER SETTINGS)
— настройки дампинга глобальных переменных (SUPERGLOBAL DUMPING SETTINGS)
PS: настоятельно советую всем прочитать интервью с Дериком Ретансом в журнале PHPArchitect (сентябрь, 2004) [pdf, 910Kb]
Теги:
Хабы:
+32
Комментарии 30
Комментарии Комментарии 30

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн