Установка и настройка XDebug на Linux (Ubuntu 10.04)
Если вы программируете не первый день, то наверняка слышали про xdebug, средство отладки для PHP. Его использование изрядно упрощает жизнь, помогает быстрее отыскивать баги и соответственно их устранять. Помимо отладки, это расширение позволяет производить профилирование, трассировку, подсчет покрытия кода, а также делать красивый форматированный вывод исключений и [vardump](http://php.net/vardump) =)
Шаг 1. Установка
Если вы пользователь Ubuntu, то можете установить расширение простой командой:
sudo apt-get install php5-xdebug
на данный момент в репозитории находится предпоследняя стабильная версия (2.0.5), но она по ряду причин меня не устраивала. Если вы хотите получить последнюю версию - прошу к следующему шагу, если нет - пропустите его.
Шаг 2. Компиляция
Для начала необходимо получить исходные коды, для этого заходим на официальный сайт и качаем понравившейся архив.
cd ~
mkdir xdebug
cd xdebug
# Вариант 1. Качаем стабильный архив
wget http://www.xdebug.org/files/xdebug-2.1.0.tgz
tar -xf xdebug-2.1.0.tgz
cd xdebug-2.1.0
# Вариант 2. Или берем из svn репозитория последнюю версию
svn co svn://svn.xdebug.org/svn/xdebug/xdebug/trunk xdebug
cd xdebug
# Для компиляции нам понадобится php5-dev и стандартный набор build-essential
sudo apt-get install build-essential php5-dev
# подготовка
phpize
# должен вывести что-то такое
# Configuring for:
# PHP Api Version: 20090626
# Zend Module Api No: 20090626
# Zend Extension Api No: 220090626
./configure --enable-xdebug
# Если появилась ошибка, читаем внимательно и удовлетворяем зависимости
make -j4 # -j2 для двух-ядерных систем
скомпилированная библиотека xdebug.so
появится в папке modules
Шаг 3. Настройка XDebug
Открываем любимым редактором файл (с правами root):
/etc/php5/apache2/conf.d/xdebug.ini
zend_extension=/home/%USERNAME%/xdebug/xdebug/modules/xdebug.so
xdebug.default_enable = On
xdebug.var_display_max_depth=6
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.idekey=netbeans-xdebug
xdebug.remote_autostart=1
xdebug.remote_log=/tmp/xdebug.log
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir=/tmp/profiler
xdebug.show_local_vars=1
xdebug.overload_var_dump=1
zend_extension - путь к модулю, если вы не компилировали xdebug, то не меняем
xdebug.default_enable - по умолчанию включен
xdebug.vardisplaymax_depth - глубина дампа массивов и объетов
xdebug.remote_enable - отладка по умолчанию включена
xdebug.remote_host - хост, на который будут идти отладочные данные
xdebug.remote_port - порт
xdebug.remote_handler - может быть dbgp или php3. Это протокол передачи данных отладки. dbgp - более современный
xdebug.idekey - идентификационный ключ, который будет посылать ваша IDE, для присоединения к отладочной сессии
xdebug.remote_autostart - автоматический запуск отладки, без параметра запуска (подробнее в документации)
xdebug.remote_log - лог отладки
xdebug.profilerenabletrigger - запуск профилирования по триггеру
xdebug.profiler_enable - по умолчанию выключен
xdebug.profileroutputdir - папка, в которую будет сохраняться информация по профилированию (папка должна существовать, и должны быть установлены права доступа rw-)
xdebug.showlocalvars - в случае возникновения не обрабатываемого исключения вместе с ошибкой будут выведены все локальные переменные
xdebug.overloadvardump - делает форматированный разноцветный vardump. Для того чтобы это работало, нужно установить в php.ini параметр **htmlerrors = On**
Более подробно о этих и других параметрах читайте в официальной документации
Шаг 4. Перезапуск Apache
sudo service apache2 restart
Шаг 5. Проверка работоспособности
-i | grep xdebug
Шаг 6. Настройка NetBeans для отладки через XDebug

Заключение
Желаю всем приятной отладки и поменьше не очевидных багов =)