barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

четверг, 23 июня 2011 г.

Найстройка параметров вывода xdebug

xdebug, кроме использования для отладки скриптов с использованием IDE, позволяет также намного увеличить читабельность и полезность информации, выводимой php-движком при возникновении ошибок / предупреждений (например, вызовов несуществующих функций). Так, кроме стека вызовов, выводимого по умолчанию при поключении xdebug-модуля, можно выводить содержимое суперглобальных массивов или отдельных из членов (в скобках - значения по-умолчанию):

xdebug.dump_globals - разрешает дамп суперглобальных переменных (1).
Что именно будет выведено, определяется параметрами вида xdebug.dump.*, например:
xdebug.dump.GET=*
xdebug.dump.SERVER=HTTP_HOST
xdebug.dump.SERVER=HTTP_HOST,SERVER_NAME

xdebug.dump_once -  если 1, то суперглобальные массивы выводятся лишь единожды, при первом возникновении ошибки, если 0 - то при каждой ошибке (1)
xdebug.dump_undefined - выводить неопределенные (undefined) переменные из суперглобальных массивов (Off)

Также, можно выводить другую дополнительную информацию:

xdebug.show_local_vars=1 - выводить значения локальных переменных
xdebug.collect_params - вывод информации о параметрах, передаваемых функции (имеет значение от 0 до 4, где 0 соответствует отсутствию информации, 4 - наиболее полному представлению)

Естественно, для того, чтобы всю эту красоту увидеть, необходимо, чтобы php-параметр display_erorrs был установлен в On (в php.ini или через ini_set()), а также чтобы Вы не переопределили обработчик ошибок через register_error_handler().

Также xdebug делает более информативным вывод функции var_dump(). Вот некоторые ini-параметры для настройки вывода, которые отображаются и на выводе var_dump, и на сообщениях, возникающих при ошибках:

xdebug.var_display_max_data - максимальная длина выводимых строк (512)
xdebug.var_display_max_children - число выводимых элементов массива / объекта (128)
xdebug.var_display_max_depth - максимальная выводимая вложенность массивов / объектов (3)


Также есть другие полезные параметры, например:

xdebug.max_nesting_level - ограничение на рекурсивные вызовы функции (100)
xdebug.show_exception_trace - выводить trace также при исключениях, даже если они отловлены (информация о неотловленных исключениях и так выводится) (0).

Полная инфорамция о настройках вывода xdebug есть в его документации здесь:
http://xdebug.org/docs/stack_trace 

1 комментарий: