Отладчик PHP
Использование отладчика
Отладчик PHP полезен при отслеживании неочевидных ошибок. Он работает через TCP порт каждый раз, когда стартует PHP. Все сообщения об ошибках из запроса будут посланы по этому TCP соединению. Информация этого раздела нужна при работе с такими редакторами как Emacs, или в интегрированной среде разработки (IDE).
Действия по установке отладчика:
Задайте порт TCP, который будет использоваться отладчиком в php3.ini (debugger.port) и разрешите его использование ( debugger.enabled).
Установите пассивный сокет на этот порт (например, командой socket -l -s 1400 в UNIX).
Внутри вашего кода запустите debugger_on(host), где host - запустите IP-адрес хоста, на котором запущен пассивный сокет. Теперь все предупреждения, замечания и т.д. будут показаны на этом сокете, даже если вы выключили error_reporting().
Протокол отладчика
Протокол отладчика основан на отдельных строках. Каждая строка имеет свой тип; несколько строк могут составлять сообщение. Каждое сообщение начинается со строки с типом start и заканчивается строкой с типом end. PHP может посылать строки с несколькими сообщениями одновременно.
Строка имеет следующий формат:
date time host(pid) type: message-data
date
Дата в формате ISO 8601 (yyyy-mm-dd)
time
Время, включая микросекунды: hh:mm:uuuuuu
host
Имя DNS или IP-адрес хоста, где было сгенерировано сообщение об ошибке.
pid
PID (id процесса) на хосте host процесса исполнившего скрипт PHP в котором произошла ошибка.
type
Тип строки. Сообщает получающей программе как трактовать содержимое строки:
Типы строк отладчика
Тип | Значенне |
---|
start | Сообщает получающей программе, что в этом месте начинается сообщение. Содержимое строки dataсодержит тип сообщения об ошибке (см. ниже). | message | Сообщение об ошибке. | location | Имя файла и номер строки, содержащей ошибку. Первая строка location содержит местоположение, data содержит информацию file:line. Строка location всегда следует после строки message и function. | frames | Число кадров в дампе стека. Если их четыре, ожидается информация о четырех уровнях вызываемых функций. Если эта строка отсутствует, глубина предполагается нулевой (ошибка произошла на высшем уровне вложенности). | function | Имя функции, содержащей ошибку. Повторяется один раз для каждого уровня в стеке вызовов функции. | end | Сообщает получающей программе, что сообщение отладчика закончено. |
data
Данные строки.
Типы ошибок отладчикаОтладчик | Внутренняя в PHP |
---|
warning | E_WARNING | error | E_ERROR | parse | E_PARSE | notice | E_NOTICE | core-error | E_CORE_ERROR | core-warning | E_CORE_WARNING | unknown | (любая другая) |
Пример. Пример сообщения об ошибке
1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice 1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable 1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: (null):7 1998-04-05 23:27:400966 lucifer.guardian.no(20481) frames: 1 1998-04-05 23:27:400966 lucifer.guardian.no(20481) function: display 1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: /home/ssb/public_html/test.php3:10 1998-04-05 23:27:400966 lucifer.guardian.no(20481) end: notice 1 2 3
8 8 8
| |