Хотя существуют отладчики, традиция использовать их в PHP не так уж и сложна. Люди стали полагаться на внедрение кода отладки непосредственно в программу для проверки объема программы. Печально известная var_dump послужила для этой цели, и версия 4.3.0 PHP принесла нам еще одну не менее полезную функцию — debug_backtrace .
Трассеры и обработчики ошибок
Обе эти функции производят довольно грубый вывод, поэтому, естественно, люди написали обертки вокруг них, чтобы исправить это. Я думаю, что довольно синий экран Гарри был одной из первых специализированных библиотек, которые я видел. Xdebug выдает подобный вывод об ошибке, хотя, возможно, не так красиво. Или синий.
Что debug_backtrace
экран для debug_backtrace
, krumo для var_dump
. Недавно FirePHP — сборка на Firebug — делает то же самое. FirePHP использует HTTP-заголовки для отправки данных с сервера на клиент, что оказывается очень удобным при работе с выводом, отличным от HTML (например, Ajax). Поскольку он основан на Firebug, он работает только на Firefox и, в частности, только на Firefox 2 (Еще одна причина для пользователей Ubuntu отказаться от Firefox 3).
Каркасы
Помимо этих общих инструментов трассировки, пара фреймворков имеют свои, более или менее специфические, инструменты. Панель инструментов отладки Symfony, вероятно, самая впечатляющая (и, в отличие от Zend Framework ), даже предоставляя информацию о запросах к базе данных, что очень полезно для профилирования.
Другой инструмент, специфичный для фреймворка, которым я весьма впечатлен, — это модуль разработчика Drupal Theme . Он рекламируется как «Firebug for Drupal theming», что довольно наглядно. В случае, если вы не использовали Drupal, у него есть сложная система тем для рендеринга страниц, и этот инструмент значительно упрощает выяснение, какая часть делает что. Даже если вы не собираетесь использовать Drupal, интересно посмотреть, как хорошо он выглядит.
Я думаю, что большинство фреймворков с интегрированным уровнем представления, могли бы получить огромную пользу от чего-то подобного, хотя специфика, очевидно, будет отличаться. Один из моих собственных проектов, Konstrukt , имеет инструмент для отображения отладочной информации о том, какие контроллеры отображаются в каком порядке. Это может быть полезно, потому что на данной странице часто есть несколько контроллеров, работающих совместно для получения окончательного ответа.
Другой пример — отладочные сообщения Cake PHP. Это расширение добавляет очень конкретные и описательные сообщения об ошибках в разных местах, что почти работает как учебное пособие для новых пользователей; Похоже, хорошая идея.
Webgrind
Я уже упоминал Xdebug, который необходим для профилирования PHP-приложений. На прошлой неделе был выпущен первый релиз Webgrind . Это основанный на HTML интерфейс для отображения результатов профилирования, сгенерированных Xdebug. Уже есть инструменты для этой цели; Если вы используете Windows, WinCacheGrind и Linux-системы, kCacheGrind . Тем не менее, я вижу несколько хороших примеров для Webgrind;
Во-первых, к клиенту с нулевой установкой проще обратиться. Для пользователей Mac это также единственный вариант. Набор функций довольно ограничен, но это оказывается несколько выгодным. kCacheGrind может быть довольно пугающим, и для профилирования функции Webgrind кажутся достаточно адекватными.
Однако самое важное, что файл журнала, сгенерированный Xdebug (который является форматом данных для различных задач), как правило, становится довольно большим. Естественно, из-за этого неудобно иметь сервер и клиент на разных компьютерах — это не проблема для Webgrind, поскольку он работает на стороне сервера.