<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML ><HEAD ><TITLE >调试器协议</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK REL="HOME" TITLE="PHP 手册" HREF="index.html"><LINK REL="UP" TITLE="PHP 的调试" HREF="debugger.html"><LINK REL="PREVIOUS" TITLE="使用调试器" HREF="debugger-using.html"><LINK REL="NEXT" TITLE="配置选项" HREF="configure.html"><META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=UTF-8"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >PHP 手册</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="debugger-using.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >附录 F. PHP 的调试</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="configure.html" ACCESSKEY="N" >下一页</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="debugger-protocol" >调试器协议</A ></H1 ><P > PHP 3 调试器协议以行为单位。每一行有一个<SPAN CLASS="emphasis" ><I CLASS="emphasis" >类型(type)</I ></SPAN >,某几行组成一个<SPAN CLASS="emphasis" ><I CLASS="emphasis" >消息(message)</I ></SPAN >。每一个消息起始于包含类型 <TT CLASS="literal" >start</TT > 的一行,并终止于包含类型 <TT CLASS="literal" >end</TT > 的一行。PHP 3 可以同时发送不同的消息行。 </P ><P > 行的格式如下: <DIV CLASS="informalexample" ><P ></P ><A NAME="AEN290895" ></A ><TABLE BORDER="0" BGCOLOR="#E0E0E0" CELLPADDING="5" ><TR ><TD ><PRE CLASS="programlisting" >date time host(pid) type: message-data</PRE ></TD ></TR ></TABLE ><P ></P ></DIV > </P ><P > <P ></P ><DIV CLASS="variablelist" ><DL ><DT ><TT CLASS="replaceable" ><I >date</I ></TT ></DT ><DD ><P > date 使用 ISO 8601 格式:<TT CLASS="replaceable" ><I >yyyy</I ></TT >-<TT CLASS="replaceable" ><I >mm</I ></TT >-<TT CLASS="replaceable" ><I >dd</I ></TT >。 </P ></DD ><DT ><TT CLASS="replaceable" ><I >time</I ></TT ></DT ><DD ><P > time 精确到毫秒:<TT CLASS="replaceable" ><I >hh</I ></TT >:<TT CLASS="replaceable" ><I >mm</I ></TT >:<TT CLASS="replaceable" ><I >uuuuuu</I ></TT >。 </P ></DD ><DT ><TT CLASS="replaceable" ><I >host</I ></TT ></DT ><DD ><P > 产生错误的 PHP 脚本所在主机的 DNS 名或 IP 地址。 </P ></DD ><DT ><TT CLASS="replaceable" ><I >pid</I ></TT ></DT ><DD ><P > 产生错误的 PHP 脚本在 <TT CLASS="replaceable" ><I >host</I ></TT > 中的 PID。 </P ></DD ><DT ><TT CLASS="replaceable" ><I >type</I ></TT ></DT ><DD ><P > 行的类型。它告诉接收信息的程序如何处理下面的数据: <DIV CLASS="table" ><A NAME="AEN290931" ></A ><P ><B >表 F-1. 调试器行类型</B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><THEAD ><TR ><TH >名称</TH ><TH >含义</TH ></TR ></THEAD ><TBODY ><TR ><TD ><TT CLASS="literal" >start</TT ></TD ><TD > 告诉接收的程序,调试信息由此开始。<TT CLASS="replaceable" ><I >data</I ></TT > 的内容将会是错误消息的类型,在本页面下方列出。 </TD ></TR ><TR ><TD ><TT CLASS="literal" >message</TT ></TD ><TD >PHP 3 错误消息。</TD ></TR ><TR ><TD ><TT CLASS="literal" >location</TT ></TD ><TD > 发生错误的文件名和行号。<TT CLASS="literal" >location</TT > 的第一行总是包含顶级(top-level)地址。<TT CLASS="replaceable" ><I >data</I ></TT > 包含 <TT CLASS="literal" ><TT CLASS="replaceable" ><I >file</I ></TT >:<TT CLASS="replaceable" ><I >line</I ></TT ></TT >。在 <TT CLASS="literal" >message</TT > 和每一个 <TT CLASS="literal" >function</TT > 之后总有一行 <TT CLASS="literal" >location</TT > 行。 </TD ></TR ><TR ><TD > <TT CLASS="literal" >frames</TT > </TD ><TD > 在下面的堆栈卸出中所包含的帧数。如果有四帧,则应该有四层函数调用的信息。如果没有给出“frames”这一行,则深度被假定为 0(错误发生在最顶层)。 </TD ></TR ><TR ><TD > <TT CLASS="literal" >function</TT ></TD ><TD > 发生错误的函数。在调用函数堆栈的每级只重复一次。 </TD ></TR ><TR ><TD ><TT CLASS="literal" >end</TT ></TD ><TD > 告诉接收的程序,除错信息到此结束。 </TD ></TR ></TBODY ></TABLE ></DIV > </P ></DD ><DT ><TT CLASS="replaceable" ><I >data</I ></TT ></DT ><DD ><P >每行的数据。</P ></DD ></DL ></DIV > <DIV CLASS="table" ><A NAME="AEN290977" ></A ><P ><B >表 F-2. 调试器错误类型</B ></P ><TABLE BORDER="1" CLASS="CALSTABLE" ><COL><COL><THEAD ><TR ><TH >调试器</TH ><TH >PHP 3 内部</TH ></TR ></THEAD ><TBODY ><TR ><TD ><SPAN CLASS="errortype" >warning</SPAN ></TD ><TD ><SPAN CLASS="errortype" >E_WARNING</SPAN ></TD ></TR ><TR ><TD ><SPAN CLASS="errortype" >error</SPAN ></TD ><TD ><SPAN CLASS="errortype" >E_ERROR</SPAN ></TD ></TR ><TR ><TD ><SPAN CLASS="errortype" >parse</SPAN ></TD ><TD ><SPAN CLASS="errortype" >E_PARSE</SPAN ></TD ></TR ><TR ><TD ><SPAN CLASS="errortype" >notice</SPAN ></TD ><TD ><SPAN CLASS="errortype" >E_NOTICE</SPAN ></TD ></TR ><TR ><TD ><SPAN CLASS="errortype" >core-error</SPAN ></TD ><TD ><SPAN CLASS="errortype" >E_CORE_ERROR</SPAN ></TD ></TR ><TR ><TD ><SPAN CLASS="errortype" >core-warning</SPAN ></TD ><TD ><SPAN CLASS="errortype" >E_CORE_WARNING</SPAN ></TD ></TR ><TR ><TD ><SPAN CLASS="errortype" >unknown</SPAN ></TD ><TD >(其它任何错误)</TD ></TR ></TBODY ></TABLE ></DIV > <TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" CLASS="EXAMPLE" ><TR ><TD ><DIV CLASS="example" ><A NAME="AEN291019" ></A ><P ><B >例 F-1. 调试器错误消息示例</B ></P ><P CLASS="literallayout" ><br> <br> 1998-04-05 23:27:400966 lucifer.guardian.no(20481) start: notice<br> 1998-04-05 23:27:400966 lucifer.guardian.no(20481) message: Uninitialized variable<br> 1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: (null;):7<br> 1998-04-05 23:27:400966 lucifer.guardian.no(20481) frames: 1<br> 1998-04-05 23:27:400966 lucifer.guardian.no(20481) function: display<br> 1998-04-05 23:27:400966 lucifer.guardian.no(20481) location: /home/ssb/public_html/test.php3:10<br> 1998-04-05 23:27:400966 lucifer.guardian.no(20481) end: notice<br> <br> </P ></DIV ></TD ></TR ></TABLE > </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="debugger-using.html" ACCESSKEY="P" >上一页</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >起始页</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="configure.html" ACCESSKEY="N" >下一页</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >使用调试器</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="debugger.html" ACCESSKEY="U" >上一级</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >配置选项</TD ></TR ></TABLE ></DIV ></BODY ></HTML >