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 (269 lines) | stat: -rw-r--r-- 8,393 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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<?xml version="1.0" encoding="iso-8859-1"?>
 <appendix id="debugger">
  <title>De PHP Debugger</title>

  <sect1 id="debugger-about">
   <title>About the debugger</title>
   <simpara>
    PHP 3 includes support for a network-based debugger.
   </simpara>
   <simpara>
    PHP 4 does not yet have a similar debugging facility.
   </simpara>
  </sect1>

  <sect1 id="debugger-using">
   <title>Het gebruik van de Debugger</title>

   <para>
    PHP's interne debugger is erg handig bij het opsporen van hardnekkige
    bugs. De debugger werkt door verbinding te maken met een
    <acronym>TCP</acronym> bij elke keer dat PHP wordt gestart. Alle
    foutmeldingen die optreden worden over de TCP verbinding verstuurd.
    Deze informatie is voor een "debugging" server, die kan draaien
    binnen een <acronym>IDE</acronym> of programeerbare editor
    (zoals Emacs).
   </para>
   <para>
    Hoe de debugger is op te zetten:
    <orderedlist>
     <listitem>
      <simpara> 
       Stel een TCP port in voor de debugger in het <link
       linkend="configuration.file">configuratie bestand</link> (<link
       linkend="ini.debugger.port">debugger.port</link>) en zet hem aan
       (<link linkend="ini.debugger.enabled">debugger.enabled</link>).
      </simpara>
     </listitem>
     <listitem>
      <simpara> 
       Zet een TCP listener op op die port (als voorbeeld
       <command>socket -l -s 1400</command> op UNIX).
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       In de code, plaats
       "debugger_on(<replaceable>host</replaceable>)", waar
       <replaceable>host</replaceable> het IP nummer is, of de naam van
       de host waarop de <acronym>TCP</acronym> listener actief is.
      </simpara>
     </listitem>
    </orderedlist>
    Nu zullern alle warnings, notice, e.d. zichtbaar worden op het
    luisterende socket, <emphasis>zelfs als ze zijn uitgeschakeld met
    <function>error_reporting</function></emphasis>.  
   </para>
  </sect1>

  <sect1 id="debugger-protocol">
   <title>Debugger Protocol</title>
   <para>
    Het debugger protocol is regel-gebaseerd. Elke regel bestaat uit een
    <emphasis>type</emphasis>, en meerdere regels vormen een
    <emphasis>bericht</emphasis>. Elke bericht begint met een regel van
    het type <literal>start</literal> and eindigs met een regel van het
    type <literal>end</literal>. PHP kan regels voor verschillende
    berichten tegelijkertijd sturen.
   </para>
   <para>
    Elke regel heeft het volgende formaat:
    <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>
	Datum in het ISO 8601 formaat
	(<replaceable>yyyy</replaceable>-<replaceable>mm</replaceable>-<replaceable>dd</replaceable>)
       </simpara>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable>time</replaceable></term>
      <listitem>
       <simpara>Tijd inclusief microseconden:
	<replaceable>hh</replaceable>:<replaceable>mm</replaceable>:<replaceable>uuuuuu</replaceable>
       </simpara>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable>host</replaceable></term>
      <listitem>
       <simpara>
	DNS naam of IP addres van de host waarop het script errors genereerd.
       </simpara>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable>pid</replaceable></term>
      <listitem>
       <simpara>
	PID (process id) op de <replaceable>host</replaceable> van het
	proces dat het PHP script dat de fout genereerde veroorzaakte.
       </simpara>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable>type</replaceable></term>
      <listitem>
       <para>
	Regeltype. Dit verteld het ontvangende programma over wat
	er komen gaat:
	<table>
	 <title>Debugger Regel Types</title>
	 <tgroup cols="2">
	  <thead>
	   <row>
	    <entry>Naam</entry>
	    <entry>Omschrijving</entry>
	   </row>
	  </thead>
	  <tbody>
	   <row>
	    <entry><literal>start</literal></entry> 
	    <entry>
	     Vertelt het ontvangende programma dat het debugger bericht
	     hier begint. De inhoud van de
	     <replaceable>data</replaceable> hangt samen met het type van
	     het fout bericht die hieronder zijn weergegeven.
	    </entry>
	   </row>
	   <row>
	    <entry><literal>message</literal></entry>
	    <entry>Het foutbericht van PHP.</entry>
	   </row>
	   <row>
	    <entry><literal>location</literal></entry>
	    <entry>
	     Bestandsnaam en regelnummer waar de fout optrad. De eerste
	     <literal>location</literal> regel bevat altijd de
	     top-level locatie.
	     <replaceable>data</replaceable> bevat
	     <literal><replaceable>bestand</replaceable>:<replaceable>regel</replaceable></literal>.
	     Er is altijd een <literal>location</literal> regel na
	     een <literal>message</literal> en na elke
	     <literal>function</literal>.
	    </entry>
	   </row>
	   <row>
	    <entry>
	     <literal>frames</literal></entry> <entry>Het aantal frames
	     in de te volgen stack dump. Als er vier frame zijn,
	     verwacht dan informatie over vier levels van aangeroepen functies.
	     Als er geen "frames" regel is gegeven, dan trad de fout op
	     level 0 (de fout trad op op top-level).
	    </entry>
	   </row>
	   <row>
	    <entry>
	     <literal>function</literal></entry> 
	    <entry>
	     Naam van de functie waar de fout optrad. Deze regel is
	     voor elk level in de functie aanroep stack herhaald.
	    </entry>
	   </row>
	   <row>
	    <entry><literal>end</literal></entry> 
	    <entry>
	     Vertel het ontvangende programma dat het debugger bericht
	     hier eindigd.
	    </entry>
	   </row>
	  </tbody>
	 </tgroup>
	</table>
       </para>
      </listitem>
     </varlistentry>
     <varlistentry>
      <term><replaceable>data</replaceable></term>
      <listitem>
       <simpara>Regel gegevens.</simpara>
      </listitem>
     </varlistentry>
    </variablelist>

    <table>
     <title>Fout typen van de debugger</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>(elk ander)</entry>
       </row>
      </tbody>
     </tgroup>
    </table>
    
    <example>
     <title>Voorbeeld debugger bericht</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:
-->