调试器协议

PHP 3 调试器协议以行为单位。每一行有一个类型(type),某几行组成一个消息(message)。每一个消息起始于包含类型 start 的一行,并终止于包含类型 end 的一行。PHP 3 可以同时发送不同的消息行。

行的格式如下:


    
    date time host(pid) type: message-data
        
     

date

date 使用 ISO 8601 格式:(yyyy-mm-dd

time

time 精确到毫秒:hh:mm:uuuuuu

host

产生错误的 PHP 脚本所在主机的 DNS 名或 IP 地址。

pid

产生错误的 PHP 脚本在 host 中的 PID(进程 id)。

type

行的类型。它告诉接收信息的程序如何处理下面的数据:

表格 E-1. 调试器行类型

名称含义
start 告诉接收的程序,调试信息由此开始。data 的内容将会是错误消息的类型,在本页面下方列出。
messagePHP 3 错误消息。
location 发生错误的文件名和行号。location 的第一行总是包含顶级(top-level)地址。data 包含 file:line。在 message 和每一个 function 之后总有一行 location 行。
frames 在下面的堆栈卸出中所包含的帧数。如果有四帧,则应该有四层函数调用的信息。如果没有给出“frames”这一行,则深度被假定为 0(错误发生在最顶层)。
function 发生错误的函数。在调用函数堆栈的每级只重复一次。
end 告诉接收的程序,除错信息到此结束。

data

每行的数据。

表格 E-2. 调试器错误类型

调试器PHP 3 内部
warningE_WARNING
errorE_ERROR
parseE_PARSE
noticeE_NOTICE
core-errorE_CORE_ERROR
core-warningE_CORE_WARNING
unknown(其它任何错误)

例子 E-1. 调试器错误消息示例


       
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