Главная > Eclipse, Open Source, PHP > Отладка РНР проектов при помощи XDebug. Часть 1.

Отладка РНР проектов при помощи XDebug. Часть 1.

21 ноября 2007

xdebug-logo.pngПриветствуем читателей. Думаю, не ошибусь, если буду считать, что среди наших читателей довольно много разработчиков, использующих серверную платформу на РНР для своих проектов. Всем РНР хорошо, да только с отладкой у него всегда были сложности. Штатного дебаггера у него нет, поэтому компания Zend, разрабатывающая популярную IDE ZendStudio была довольно долго чуть ли не одним из лидеров, так как поставляла удобный отладчик вместе со своей средой, а позже создала целую серверную инфраструктуру для развёртывания и управления РНР средой (речь идет о Zend Platform, но об этом продукте мы поговорим как нибудь в другой раз). Ещё на рынке есть довольно неплохая среда с отладчиком - NuSphere PHPEd, но он также коммерческий (но в работе очень даже приятный).

А как же те пользователи, которые в силу своих причин хотят работать с открытыми продуктами? Странная ситуация, что сама среда РНР открыта, а вот отладчика под неё нету, хотя многие программисты и компании многие годы разрабатывают очень даже серьёзные проекты на РНР. Смею заверить вас, что не все так страшно, инструменты отладки с открытым кодом для РНР существуют. Но, как говорится, не отладчиком единым. Хочется иметь ещё и профайлер (для замера выполнения отдельных участков кода и целых скриптов), да и все в одном пакете.

Да, и такое есть. Речь идёт о проекте XDebug (не путать с одноимённым проектом отладчика для десктопных приложений, также open-source). Он позволяет не только проводить полную отладку РНР скриптов, но и просматривать стек вызовов функций, имеет встроенный профайлер. Поддерживается как удалённая отладка (поддерживаются несколько протоколов для работы с разными дебаг-клиентами), так и просто работа с файлами - в таком режиме отладочная информация записывается в файл на диске, а позже может быть проанализирована сторонними программами.

В настоящее время XDebug поддерживает все версии РНР, от устаревшей ветки 4.4х до самых последних сборок версии 5.2.5 и даже версиями для разработчиков ветки 5.3.х. Сам дистрибутив включает в себя модуль для Windows версии РНР, или исходные коды для сборки под Linux, также вы можете скачать консольный клиент для отладки (доступен под Linux и Win32). Доступна ещё и тестовая версия ветки 2.1, но пока применять её в серьёзной постоянной работе следует осторожно.

Совсем недавно вышло обновление, теперь версия 2.0.2, которая значительно переделана в части анализа кода и профайлинга, поэтому рекомендуем пользоваться только самой последней версией.

Ну а что же с поддержкой сред разработки? В популярнейшей IDE, PHPEclipse, по крайней мере в ночных сборках, уже есть отдельный пакет для поддержки отладки при помощи XDebug, наша любимая среда Aptana пока не имеет такой поддержки, но разработчики скорее всего добавят такую полезную функцию - без неё РНР расширение Aptan-ы довольно бедное. Другие РНР IDE среды также можно настроить на работу с XDebug-ом, так как он поддерживает несколько протоколов обмена информацией с клиентом, а все популярные среды поддерживают стандартный протокол отладки DBG. Так что и NuSphere PHPEd, и KomodoIDE и Dev-PHP и Maguma Studio - все эти IDE поддерживаются. Существует даже плагин для редактора Notepad++. Ну и популярный открытый пакет PDT для Eclipse также поддерживается, хотя, сказать честно, заставить его корректно работать мне было достаточно сложно.

В заключение упомянем ещё одну возможность. Информация об исполнении кода и профайлинга может сохранятся в специальном формате, который после исполнения можно анализировать при помощи отдельных программ, строя графы исполнения и анализируя производительность. Но только в NuSphere PHPEd и продуктах Zend есть возможность работать с профайлингом прямо в среде отладки, остальные продукты такого функционала не имеют. Для этого придётся использовать сторонние программы, с которым может возникнуть сложности. По сути, стандартной является Linux-программа KCacheGrind, для Windows среды есть порт под названием WinCacheGrind, которая, правда, давно не обновлялась, и работает нестабильно при анализе очень больших файлов (при анализе работы больших скриптов такие файлы не редкость). Очень долгое время альтернативы этому средству просто не было, сейчас же появилось несколько любопытных проектов, которые заслуживают внимания и вполне могут стать вашим основным рабочим инструментом. Это CachegrindVisualizer, который написан под среду AIR и позволяет строить наглядный и красивый граф исполнения скрипта, самостоятельный клиент для отладки XDebugClient, позволяющий работать без IDE (для платформы Win32). Продукты интеренсые, поэтому в следующих статьях мы расскажем подробнее.

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

P.S. Проголосуйте за статью на DevLinks.com.ua. Нам важно Ваше мнение.

Developers.org.ua