File: debugger.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (229 lines) | stat: -rw-r--r-- 8,002 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- EN-Revision: 1.2 Maintainer: perugini Status: working -->
<appendix id="debugger">
 <title>Il Debugger PHP</title>

 <sect1 id="debugger-using">
  <title>Uso del Debugger</title>

  <para>
   Il debugger interno del PHP &egrave; utile per tracciare errori non 
    visibili.
   Il debugger funziona tramite una connessione ad una porta <acronym>TCP</acronym>
   che viene attivata ogni volta che viene eseguito il PHP.
   Tutti i messaggi di errore generati da quella richiesta, vengono inviati
   a questa connessione in TCP. Questa modalit&agrave; &egrave; pensata
   per i "server di debugging" che sono eseguiti all'interno di un <acronym>IDE</acronym>
   o un editor programmabile (tipo Emacs).</para> 
 
  <para>
   Come configurare il debugger:
   <orderedlist>
    <listitem><simpara> Impostare una porta TCP per il debugger nel <link linkend="configuration.file">file di configurazione</link> (<link linkend="ini.debugger.port">debugger.port</link>) e attivarla
      (<link linkend="ini.debugger.enabled">debugger.enabled</link>).</simpara></listitem>
 
    <listitem><simpara> Impostare un TCP listener sulla porta scelta (per esempio <command>socket -l -s 1400</command> su UNIX).</simpara></listitem> 
      
    <listitem><simpara> Nel tuo codice, esegui "debugger_on(<replaceable>host</replaceable>)", dove
      <replaceable>host</replaceable> &egrave; l'indirizzo IP o il nome dell'host su cui &egrave; in 
      esecuzione il <acronym>TCP</acronym> listener.</simpara></listitem>

   </orderedlist>

   Adesso, tutti i messaggi di warning, informazione etc. verranno inviati sul listener socket,
   <emphasis>anche se disattivati tramite la funzione <function>error_reporting</function></emphasis>.</para></sect1>
 
 <sect1 id="debugger-protocol">
  <title>Protocollo del Debugger</title>
  <para>
   The debugger protocol is line-based.  Each line has a
   <emphasis>type</emphasis>, and several lines compose a
   <emphasis>message</emphasis>.  Each message starts with a line of the
   type <literal>start</literal> and terminates with a line of the
   type <literal>end</literal>.  PHP may send lines for different
   messages simultaneously.</para>

  <para>
   A line has this format:
   <informalexample>
    <literallayout>
<replaceable>date</replaceable> <replaceable>time</replaceable> <replaceable>host</replaceable>(<replaceable>pid</replaceable>) <replaceable>type</replaceable>: <replaceable>message-data</replaceable>
</literallayout>
   </informalexample>
   <variablelist>
    <varlistentry>
     <term><replaceable>date</replaceable></term>
     <listitem>
      <simpara>Date in ISO 8601 format (<replaceable>yyyy</replaceable>-<replaceable>mm</replaceable>-<replaceable>dd</replaceable>)
      </simpara>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><replaceable>time</replaceable></term>
     <listitem>
      <simpara>Time including microseconds:
       <replaceable>hh</replaceable>:<replaceable>mm</replaceable>:<replaceable>uuuuuu</replaceable>
      </simpara>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><replaceable>host</replaceable></term>
     <listitem>
      <simpara>DNS name or IP address of the host where the script
      error was generated.</simpara>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><replaceable>pid</replaceable></term>
     <listitem>
      <simpara>PID (process id) on <replaceable>host</replaceable> of
       the process with the PHP script that generated this error.</simpara>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><replaceable>type</replaceable></term>
     <listitem>
      <para>Type of line.  Tells the receiving program about what
       it should treat the following data as:
       <table>
	<title>Debugger Line Types</title>
	<tgroup cols="2">
	 <thead>
	  <row>
	   <entry>Name</entry>
	   <entry>Meaning</entry>
	  </row>
	 </thead>
	 <tbody>
	  <row>
	   <entry><literal>start</literal></entry> <entry>Tells the
	    receiving program that a debugger message starts here.
	    The contents of <replaceable>data</replaceable> will be
	    the type of error message, listed below.
	   </entry>
	  </row>
	  <row>
	   <entry><literal>message</literal></entry>
	   <entry>The PHP error message.</entry>
	  </row>
	  <row>
	   <entry><literal>location</literal></entry>
	   <entry>
	    File name and line number where the error occured.  The
	    first <literal>location</literal> line will always contain
	    the top-level location.  <replaceable>data</replaceable>
	    will contain
	    <literal><replaceable>file</replaceable>:<replaceable>line</replaceable></literal>.
	    There will always be a <literal>location</literal> line
	    after <literal>message</literal> and after every
	    <literal>function</literal>.
	   </entry>
	  </row>
	  <row>
	   <entry><literal>frames</literal></entry> <entry>Number of
	    frames in the following stack dump.  If there are four
	    frames, expect information about four levels of called
	    functions.  If no "frames" line is given, the depth should
	    be assumed to be 0 (the error occured at top-level).
	   </entry>
	  </row>
	  <row>
	   <entry><literal>function</literal></entry> <entry>Name of
	    function where the error occured.  Will be repeated once
	    for every level in the function call stack.</entry>
	  </row>
	  <row>
	   <entry><literal>end</literal></entry> <entry>Tells the
	   receiving program that a debugger message ends
	   here.</entry>
	  </row>
	 </tbody>
	</tgroup>
       </table>
      </para>
     </listitem>
    </varlistentry>
    <varlistentry>
     <term><replaceable>data</replaceable></term>
     <listitem>
      <simpara>Line data.</simpara>
     </listitem>
    </varlistentry>
   </variablelist>

   <table>
    <title>Debugger Error Types</title>
    <tgroup cols="2">
     <thead>
      <row>
       <entry>Debugger</entry>
       <entry>PHP Internal</entry>
      </row>
     </thead>
     <tbody>
      <row>
       <entry><errortype>warning</errortype></entry>
       <entry><errortype>E_WARNING</errortype></entry>
      </row>
      <row>
       <entry><errortype>error</errortype></entry>
       <entry><errortype>E_ERROR</errortype></entry>
      </row>
      <row>
       <entry><errortype>parse</errortype></entry>
       <entry><errortype>E_PARSE</errortype></entry>
      </row>
      <row>
       <entry><errortype>notice</errortype></entry>
       <entry><errortype>E_NOTICE</errortype></entry>
      </row>
      <row>
       <entry><errortype>core-error</errortype></entry>
       <entry><errortype>E_CORE_ERROR</errortype></entry>
      </row>
      <row>
       <entry><errortype>core-warning</errortype></entry>
       <entry><errortype>E_CORE_WARNING</errortype></entry>
      </row>
      <row>
       <entry><errortype>unknown</errortype></entry>
       <entry>(any other)</entry>
      </row>
     </tbody>
    </tgroup>
   </table>

   <example>
    <title>Example Debugger Message</title>
    <literallayout>
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
</literallayout></example>

  </para>
 </sect1>

</appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->