0,0
рейтинг
13 ноября 2009 в 14:09

Разработка → Инструменты для визуализации логов профайлера xdebug

PHP*
Наверное многие php разработчики используют профайлер xdebug для поиска узких мест в приложениях. Но просто смотреть логи очень не удобно, поэтому были созданы инструменты для их визуализации. Об этих инструментах я и хочу коротко рассказать.

Webgrind

Webgrind это набор php скриптов, которые можно установить на локальный или удаленный веб сервер. Дальше все просто до неприличия — закачиваем файл лога и смотрим статистику.
image
Самый очевидный плюс Webgrind'а это кроссплатформенность и простота установки.
Показывает список функций которые вызывались, количество вызовов (Invocation Count), общеё время потраченное на вызов (Total Self Cost) и общее время потраченное на выполнение (Total Inclusive Cost).
Можно скрыть php функции. Можно перейти внутрь функции, чтобы увидеть развернутую статистику.

KCachegrind

Для работы KCachegrind нужны библиотеки третьего KDE. Будет работать в большинстве Unix-подобных ОС (у меня точно работает в Ubuntu и FreeBSD), а также Windows (через Cygwin) и MacOS X (я не проверял). Это наверное самое функциональное и удобное средство для визуализации профайлов из всех доступных.

image
Видно вызовы функций, время, а также можно посмотреть граф вызовов (очень удобно) и карту (тоже иногда удобно).

WinCacheGrind.

WinCacheGrind это урезанный KCachegrind для Windows. Можно конечно попробовать запустить на виртуальной машине под другими ОС, но смысла не вижу. Из функционала доступен просмотр вызовов функций, также можно скрыть быстро выполняющиеся функции.

image

xdebugtoolkit

Если про вышеперечисленные инструменты вы наверняка знали, то про xdebugtoolkit с большой долей вероятности слышите впервые. Я сам про него узнал только несколько месяцев назад.
xdebugtoolkit позволяет визуализировать вот такие графы:

image

image
В общем если оо-о-чень не хочется тянуть в систему KDE либы для установки KCachegrind, то можно использовать xdebugtoolkit в связке с Webgrind.

MacCallGrind

Визуализатор для MacOS X. Я его не использовал (с MacOS X почти не работал). Выглядит вот так:

image
Внешне смахивает на WinCacheGrind. Судя по описанию функционал аналогичный.

CachegrindVisualizer

О ней мне буквально только что рассказал ftr. Это отечественная разработка хабраюзера Develar. Работает на Adobe AIR. Скриншот сильно большой, вот ссылка. И выдержка с описания:
CachegrindVisualizer строит более информативный граф, чем KCacheGrind — на острие ребра есть метка, набранная шрифтом меньшего размера, — это собственное время (self time) затраченное на выполнение этой функции, — собственное время выполнения именно этого вызова, а не всех вызовов данной функции.

Виглядит впечетляюще. Нужно будет попробовать использовать. Если кто-то уже работал — делитесь впечатлениями.

Послесловие
Как я и обещал описание короткое. С большинством из этих приложений я работал давно. Сейчас использую KCachegrind, как наиболее удобный и функциональный инструмент.

PS. Для того чтобы включить профайлер в xdebug нужно прописать «xdebug.profiler_enable = 1» в php.ini.

UPD. На Хабре есть перевод статьи о профилировании кода с помощью xdebug Profiling PHP Applications With xdebug. В ней более детально расписана работа с WinCacheGrind и KCachegrind.
Танасийчук Степан @stfalcon
карма
57,3
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (26)

  • –2
    Отличная подборка! Особенно впечатляет 3D визуализация!
    • 0
      вот с 3d под фрей у меня как-то не сложилось… я и с dot viewer помню намучился порядочно пока понял что да как :)
    • 0
      Ага. Даешь 3D в консоли =)

      KCachegrind под OS X — из области фантастики. Не тратьте время. Проще и быстрее поставить убунту в виртуалке.

      MacCallGrind — не тратьте время. На больших датасетах виснет. Функционал убог. Короче, см. п. 1.
  • –1
    Обязательно попробую вышепредставленные утилиты
  • +1
    > Для работы KCachegrind нужны библиотеки третьего KDE
    Ага, понятно теперь, а то я недавно ради KCachegrind ставил winKDE(latest было 4.3.3) и не нашёл там нужного пакета (Kdesdk), загрузил все возможные, всё равно не нашёл, да плюнул на это. Нужен именно winKDE 3, ясно.
    А WinCacheGrind это ерунда, к тому же 5 лет уже не обновляется, часто глючит, иногда падает при открытии некоторых логов.
    • 0
      а через Cygwin не пробовали?

      у меня он подтянул «kdelibs-3.5.10_2 Base set of libraries needed by KDE programs». до этого KDE либ вобще не было в системе.

      и в Requirements на офф. сайте:
      KCachegrind:
      * Libraries for KDE 3.[01234].x. Note that KDE is not bound to Linux, but runs on most Unixes, on Windows (KDE on CygWin), and even MacOS X (Fink project)
      * Commands 'dot' (GraphViz) for call graph, and 'objdump' (BinUtils) for assembler view (these are runtime requirements, not needed for compilation)
      • 0
        ага, спасибо, попробую как время будет. Что-то по cygwin и забыл совсем, должно работать.
  • +1
    А кто может мне подсказать. xdebug для php 5.2.x на php 5.2.10 валит apache 2.2.11 каждые полчаса. Более новых версий xdebug нету.
    • 0
      Случайно eAccelerator не включен? У меня (PHP 5.2.10, Apache 2.2.11, WinXP SP3) проблема решилась установкой eaccelerator.optimizer = «0».
      • 0
        Нет, не установлен даже. (OS: Win Vista со всеми последними апдейтами)

        В сети я даже видел описание похожего, но нигде не нашел решения
        • 0
          На висте и старше XDebug очень, мягко говоря, хреново работает. Так и не смог решить, поставил линукс в VirtualBox и отлаживаю так, благо с сетевой отладкой проблем особых нет.
          • 0
            У меня тоже самое и на XP было, тоже apache вылетал постоянно из-за xdebug, php 5.2. Тогда так и не решил проблему, да и возиться лень было.
    • 0
      У меня такая же проблема! Было тоже самое под XP, теперь под windows 7 вылетает. Пробовал разные версии xdebug, не помогает. Последнее время работаю над одним большим проектом и при включенном xdebug апач падает оочень часто. Раньше такой проблемы вроде не было, возможно это как-то связано с запускаемым кодом. Сейчас у меня xdebug по-умолчанию выключен, включаю только при необходимости что-нибудь отладить.
  • 0
    Пользовался почти всё время WinCacheGrind сейчас потестим новые программы. Особенное спасибо за xdebugtoolkit, т.к. под Убунту пока не находили нечего…
  • 0
    Для удобства логированяи еще очень полезно установить плагин для FireFox
    https://addons.mozilla.org/ru/firefox/addon/3960

    Этот плагин будет передавать POST или GET параметр XDEBUG_PROFILE, который отвечает за то, нужно ли логировать выполнение скрипта.

    Допустим дошли до страници с формой, которую нужно оптимизировать — включили в статусной строке зеленую иконку плагина и отправляем форму. Потом можно отключить передачу параметра.
    • –2
      кстати да. я когда-то писал о том как с его помощью запускать дебаг в NetBeans с браузера blog.stfalcon.com/2009/02/ff-netbeans-xdebug/
      для Eclipse аналогчино делается. для новых Зенд Студий думаю тоже.
  • +1
    WinCacheGrind — пробовал с последним xdebug ни один лог не открыла, после чего была выкинута.

    Поставил CachegrindVisualizer — удобно и главное работает, но кроме Adobe AIR понадобиться graphviz и zgrviewer.

    Работа происходит следующим образом:
    1) Запускаем скрипт, получаем лог
    2) Открываем его в CachegrindVisualizer (если файл большой может зависнуть)
    3) После того как CachegrindVisualizer отработал, в той же директории, находим *.dot, который открываем в zgrviewer
    4) Смотрим.

    Если *.dot большой ждать нужно долго или может не хватить памяти. В последнем случае узнать об этом проблематично, т.к. выброшенное исключение отобразиться в консоле (т.к. zgrviewer запускается через bat файл), которая закрыта окном.

    Если нужно просмотреть много логов — надоедает.
  • 0
    Как писали выше 3д впечатляет, но думаю, толку мало с него.
    Пост однозначно в избранное :) спасибо, когда будет нужда сюда точно вернусь
  • 0
    Скриншоты ваши? Порадовало присутствие CodeIgniter.
    • –2
      нет. я решил не заморачиватся и стянул все с офф. сайтов. иначе пришлось бы все это устанавливать.
  • –2
    Меня одного начинает раздражать скрины аля Mac-style?
    • +1
      да, одного
  • 0
    господа, автор xdebugtoolkit'а хотел бы высказаться, но у него нет инвайта.
    alexey.kupershtokh@gmail.com — может кто выслать?
    • 0
      а вот и я .-)
      • 0
        не прошло и 9 месяцев :-) с рождением что ли )
  • 0
    Еще есть красивая штука MacGDBp (ссылка).

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.