perlrepository: Add example of why tests need running
[perl.git] / pod / perldebguts.pod
1 =head1 NAME
2
3 perldebguts - Guts of Perl debugging 
4
5 =head1 DESCRIPTION
6
7 This is not L<perldebug>, which tells you how to use
8 the debugger.  This manpage describes low-level details concerning
9 the debugger's internals, which range from difficult to impossible
10 to understand for anyone who isn't incredibly intimate with Perl's guts.
11 Caveat lector.
12
13 =head1 Debugger Internals
14
15 Perl has special debugging hooks at compile-time and run-time used
16 to create debugging environments.  These hooks are not to be confused
17 with the I<perl -Dxxx> command described in L<perlrun>, which is
18 usable only if a special Perl is built per the instructions in the
19 F<INSTALL> podpage in the Perl source tree.
20
21 For example, whenever you call Perl's built-in C<caller> function
22 from the package C<DB>, the arguments that the corresponding stack
23 frame was called with are copied to the C<@DB::args> array.  These
24 mechanisms are enabled by calling Perl with the B<-d> switch.
25 Specifically, the following additional features are enabled
26 (cf. L<perlvar/$^P>):
27
28 =over 4
29
30 =item *
31
32 Perl inserts the contents of C<$ENV{PERL5DB}> (or C<BEGIN {require
33 'perl5db.pl'}> if not present) before the first line of your program.
34
35 =item *
36
37 Each array C<@{"_<$filename"}> holds the lines of $filename for a
38 file compiled by Perl.  The same is also true for C<eval>ed strings
39 that contain subroutines, or which are currently being executed.
40 The $filename for C<eval>ed strings looks like C<(eval 34)>.
41 Code assertions in regexes look like C<(re_eval 19)>.
42
43 Values in this array are magical in numeric context: they compare
44 equal to zero only if the line is not breakable.
45
46 =item *
47
48 Each hash C<%{"_<$filename"}> contains breakpoints and actions keyed
49 by line number.  Individual entries (as opposed to the whole hash)
50 are settable.  Perl only cares about Boolean true here, although
51 the values used by F<perl5db.pl> have the form
52 C<"$break_condition\0$action">.  
53
54 The same holds for evaluated strings that contain subroutines, or
55 which are currently being executed.  The $filename for C<eval>ed strings
56 looks like C<(eval 34)> or  C<(re_eval 19)>.
57
58 =item *
59
60 Each scalar C<${"_<$filename"}> contains C<"_<$filename">.  This is
61 also the case for evaluated strings that contain subroutines, or
62 which are currently being executed.  The $filename for C<eval>ed
63 strings looks like C<(eval 34)> or C<(re_eval 19)>.
64
65 =item *
66
67 After each C<require>d file is compiled, but before it is executed,
68 C<DB::postponed(*{"_<$filename"})> is called if the subroutine
69 C<DB::postponed> exists.  Here, the $filename is the expanded name of
70 the C<require>d file, as found in the values of %INC.
71
72 =item *
73
74 After each subroutine C<subname> is compiled, the existence of
75 C<$DB::postponed{subname}> is checked.  If this key exists,
76 C<DB::postponed(subname)> is called if the C<DB::postponed> subroutine
77 also exists.
78
79 =item *
80
81 A hash C<%DB::sub> is maintained, whose keys are subroutine names
82 and whose values have the form C<filename:startline-endline>.
83 C<filename> has the form C<(eval 34)> for subroutines defined inside
84 C<eval>s, or C<(re_eval 19)> for those within regex code assertions.
85
86 =item *
87
88 When the execution of your program reaches a point that can hold a
89 breakpoint, the C<DB::DB()> subroutine is called if any of the variables
90 C<$DB::trace>, C<$DB::single>, or C<$DB::signal> is true.  These variables
91 are not C<local>izable.  This feature is disabled when executing
92 inside C<DB::DB()>, including functions called from it 
93 unless C<< $^D & (1<<30) >> is true.
94
95 =item *
96
97 When execution of the program reaches a subroutine call, a call to
98 C<&DB::sub>(I<args>) is made instead, with C<$DB::sub> holding the
99 name of the called subroutine. (This doesn't happen if the subroutine
100 was compiled in the C<DB> package.)
101
102 =back
103
104 Note that if C<&DB::sub> needs external data for it to work, no
105 subroutine call is possible without it. As an example, the standard
106 debugger's C<&DB::sub> depends on the C<$DB::deep> variable
107 (it defines how many levels of recursion deep into the debugger you can go
108 before a mandatory break).  If C<$DB::deep> is not defined, subroutine
109 calls are not possible, even though C<&DB::sub> exists.
110
111 =head2 Writing Your Own Debugger
112
113 =head3 Environment Variables
114
115 The C<PERL5DB> environment variable can be used to define a debugger.
116 For example, the minimal "working" debugger (it actually doesn't do anything)
117 consists of one line:
118
119   sub DB::DB {}
120
121 It can easily be defined like this:
122
123   $ PERL5DB="sub DB::DB {}" perl -d your-script
124
125 Another brief debugger, slightly more useful, can be created
126 with only the line:
127
128   sub DB::DB {print ++$i; scalar <STDIN>}
129
130 This debugger prints a number which increments for each statement
131 encountered and waits for you to hit a newline before continuing
132 to the next statement.
133
134 The following debugger is actually useful:
135
136   {
137     package DB;
138     sub DB  {}
139     sub sub {print ++$i, " $sub\n"; &$sub}
140   }
141
142 It prints the sequence number of each subroutine call and the name of the
143 called subroutine.  Note that C<&DB::sub> is being compiled into the
144 package C<DB> through the use of the C<package> directive.
145
146 When it starts, the debugger reads your rc file (F<./.perldb> or
147 F<~/.perldb> under Unix), which can set important options.
148 (A subroutine (C<&afterinit>) can be defined here as well; it is executed
149 after the debugger completes its own initialization.)
150
151 After the rc file is read, the debugger reads the PERLDB_OPTS
152 environment variable and uses it to set debugger options. The
153 contents of this variable are treated as if they were the argument
154 of an C<o ...> debugger command (q.v. in L<perldebug/Options>).
155
156 =head3 Debugger internal variables
157
158 In addition to the file and subroutine-related variables mentioned above,
159 the debugger also maintains various magical internal variables.
160
161 =over 4
162
163 =item *
164
165 C<@DB::dbline> is an alias for C<@{"::_<current_file"}>, which
166 holds the lines of the currently-selected file (compiled by Perl), either
167 explicitly chosen with the debugger's C<f> command, or implicitly by flow
168 of execution.
169
170 Values in this array are magical in numeric context: they compare
171 equal to zero only if the line is not breakable.
172
173 =item *
174
175 C<%DB::dbline>, is an alias for C<%{"::_<current_file"}>, which
176 contains breakpoints and actions keyed by line number in
177 the currently-selected file, either explicitly chosen with the
178 debugger's C<f> command, or implicitly by flow of execution.
179
180 As previously noted, individual entries (as opposed to the whole hash)
181 are settable.  Perl only cares about Boolean true here, although
182 the values used by F<perl5db.pl> have the form
183 C<"$break_condition\0$action">.
184
185 =back
186
187 =head3 Debugger customization functions
188
189 Some functions are provided to simplify customization.
190
191 =over 4
192
193 =item *
194
195 See L<perldebug/"Configurable Options"> for a description of options parsed by
196 C<DB::parse_options(string)>.
197
198 =item *
199
200 C<DB::dump_trace(skip[,count])> skips the specified number of frames
201 and returns a list containing information about the calling frames (all
202 of them, if C<count> is missing).  Each entry is reference to a hash
203 with keys C<context> (either C<.>, C<$>, or C<@>), C<sub> (subroutine
204 name, or info about C<eval>), C<args> (C<undef> or a reference to
205 an array), C<file>, and C<line>.
206
207 =item *
208
209 C<DB::print_trace(FH, skip[, count[, short]])> prints
210 formatted info about caller frames.  The last two functions may be
211 convenient as arguments to C<< < >>, C<< << >> commands.
212
213 =back
214
215 Note that any variables and functions that are not documented in
216 this manpages (or in L<perldebug>) are considered for internal   
217 use only, and as such are subject to change without notice.
218
219 =head1 Frame Listing Output Examples
220
221 The C<frame> option can be used to control the output of frame 
222 information.  For example, contrast this expression trace:
223
224  $ perl -de 42
225  Stack dump during die enabled outside of evals.
226
227  Loading DB routines from perl5db.pl patch level 0.94
228  Emacs support available.
229
230  Enter h or `h h' for help.
231
232  main::(-e:1):   0
233    DB<1> sub foo { 14 }
234
235    DB<2> sub bar { 3 }
236
237    DB<3> t print foo() * bar()
238  main::((eval 172):3):   print foo() + bar();
239  main::foo((eval 168):2):
240  main::bar((eval 170):2):
241  42
242
243 with this one, once the C<o>ption C<frame=2> has been set:
244
245    DB<4> o f=2
246                 frame = '2'
247    DB<5> t print foo() * bar()
248  3:      foo() * bar()
249  entering main::foo
250   2:     sub foo { 14 };
251  exited main::foo
252  entering main::bar
253   2:     sub bar { 3 };
254  exited main::bar
255  42
256
257 By way of demonstration, we present below a laborious listing
258 resulting from setting your C<PERLDB_OPTS> environment variable to
259 the value C<f=n N>, and running I<perl -d -V> from the command line.
260 Examples use various values of C<n> are shown to give you a feel
261 for the difference between settings.  Long those it may be, this
262 is not a complete listing, but only excerpts.
263
264 =over 4
265
266 =item 1
267
268   entering main::BEGIN
269    entering Config::BEGIN
270     Package lib/Exporter.pm.
271     Package lib/Carp.pm.
272    Package lib/Config.pm.
273    entering Config::TIEHASH
274    entering Exporter::import
275     entering Exporter::export
276   entering Config::myconfig
277    entering Config::FETCH
278    entering Config::FETCH
279    entering Config::FETCH
280    entering Config::FETCH
281
282 =item 2
283
284   entering main::BEGIN
285    entering Config::BEGIN
286     Package lib/Exporter.pm.
287     Package lib/Carp.pm.
288    exited Config::BEGIN
289    Package lib/Config.pm.
290    entering Config::TIEHASH
291    exited Config::TIEHASH
292    entering Exporter::import
293     entering Exporter::export
294     exited Exporter::export
295    exited Exporter::import
296   exited main::BEGIN
297   entering Config::myconfig
298    entering Config::FETCH
299    exited Config::FETCH
300    entering Config::FETCH
301    exited Config::FETCH
302    entering Config::FETCH
303
304 =item 3
305
306   in  $=main::BEGIN() from /dev/null:0
307    in  $=Config::BEGIN() from lib/Config.pm:2
308     Package lib/Exporter.pm.
309     Package lib/Carp.pm.
310    Package lib/Config.pm.
311    in  $=Config::TIEHASH('Config') from lib/Config.pm:644
312    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
313     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from li
314   in  @=Config::myconfig() from /dev/null:0
315    in  $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
316    in  $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
317    in  $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574
318    in  $=Config::FETCH(ref(Config), 'PERL_SUBVERSION') from lib/Config.pm:574
319    in  $=Config::FETCH(ref(Config), 'osname') from lib/Config.pm:574
320    in  $=Config::FETCH(ref(Config), 'osvers') from lib/Config.pm:574
321
322 =item 4
323
324   in  $=main::BEGIN() from /dev/null:0
325    in  $=Config::BEGIN() from lib/Config.pm:2
326     Package lib/Exporter.pm.
327     Package lib/Carp.pm.
328    out $=Config::BEGIN() from lib/Config.pm:0
329    Package lib/Config.pm.
330    in  $=Config::TIEHASH('Config') from lib/Config.pm:644
331    out $=Config::TIEHASH('Config') from lib/Config.pm:644
332    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
333     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/
334     out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/
335    out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
336   out $=main::BEGIN() from /dev/null:0
337   in  @=Config::myconfig() from /dev/null:0
338    in  $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
339    out $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
340    in  $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
341    out $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
342    in  $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574
343    out $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574
344    in  $=Config::FETCH(ref(Config), 'PERL_SUBVERSION') from lib/Config.pm:574
345
346 =item 5
347
348   in  $=main::BEGIN() from /dev/null:0
349    in  $=Config::BEGIN() from lib/Config.pm:2
350     Package lib/Exporter.pm.
351     Package lib/Carp.pm.
352    out $=Config::BEGIN() from lib/Config.pm:0
353    Package lib/Config.pm.
354    in  $=Config::TIEHASH('Config') from lib/Config.pm:644
355    out $=Config::TIEHASH('Config') from lib/Config.pm:644
356    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
357     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E
358     out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E
359    out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
360   out $=main::BEGIN() from /dev/null:0
361   in  @=Config::myconfig() from /dev/null:0
362    in  $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574
363    out $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574
364    in  $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574
365    out $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574
366
367 =item 6
368
369   in  $=CODE(0x15eca4)() from /dev/null:0
370    in  $=CODE(0x182528)() from lib/Config.pm:2
371     Package lib/Exporter.pm.
372    out $=CODE(0x182528)() from lib/Config.pm:0
373    scalar context return from CODE(0x182528): undef
374    Package lib/Config.pm.
375    in  $=Config::TIEHASH('Config') from lib/Config.pm:628
376    out $=Config::TIEHASH('Config') from lib/Config.pm:628
377    scalar context return from Config::TIEHASH:   empty hash
378    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
379     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/Exporter.pm:171
380     out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/Exporter.pm:171
381     scalar context return from Exporter::export: ''
382    out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
383    scalar context return from Exporter::import: ''
384
385 =back
386
387 In all cases shown above, the line indentation shows the call tree.
388 If bit 2 of C<frame> is set, a line is printed on exit from a
389 subroutine as well.  If bit 4 is set, the arguments are printed
390 along with the caller info.  If bit 8 is set, the arguments are
391 printed even if they are tied or references.  If bit 16 is set, the
392 return value is printed, too.
393
394 When a package is compiled, a line like this
395
396     Package lib/Carp.pm.
397
398 is printed with proper indentation.
399
400 =head1 Debugging regular expressions
401
402 There are two ways to enable debugging output for regular expressions.
403
404 If your perl is compiled with C<-DDEBUGGING>, you may use the
405 B<-Dr> flag on the command line.
406
407 Otherwise, one can C<use re 'debug'>, which has effects at
408 compile time and run time.  Since Perl 5.9.5, this pragma is lexically
409 scoped.
410
411 =head2 Compile-time output
412
413 The debugging output at compile time looks like this:
414
415   Compiling REx `[bc]d(ef*g)+h[ij]k$'
416   size 45 Got 364 bytes for offset annotations.
417   first at 1
418   rarest char g at 0
419   rarest char d at 0
420      1: ANYOF[bc](12)
421     12: EXACT <d>(14)
422     14: CURLYX[0] {1,32767}(28)
423     16:   OPEN1(18)
424     18:     EXACT <e>(20)
425     20:     STAR(23)
426     21:       EXACT <f>(0)
427     23:     EXACT <g>(25)
428     25:   CLOSE1(27)
429     27:   WHILEM[1/1](0)
430     28: NOTHING(29)
431     29: EXACT <h>(31)
432     31: ANYOF[ij](42)
433     42: EXACT <k>(44)
434     44: EOL(45)
435     45: END(0)
436   anchored `de' at 1 floating `gh' at 3..2147483647 (checking floating) 
437         stclass `ANYOF[bc]' minlen 7 
438   Offsets: [45]
439         1[4] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 5[1]
440         0[0] 12[1] 0[0] 6[1] 0[0] 7[1] 0[0] 9[1] 8[1] 0[0] 10[1] 0[0]
441         11[1] 0[0] 12[0] 12[0] 13[1] 0[0] 14[4] 0[0] 0[0] 0[0] 0[0]
442         0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 18[1] 0[0] 19[1] 20[0]  
443   Omitting $` $& $' support.
444
445 The first line shows the pre-compiled form of the regex.  The second
446 shows the size of the compiled form (in arbitrary units, usually
447 4-byte words) and the total number of bytes allocated for the
448 offset/length table, usually 4+C<size>*8.  The next line shows the
449 label I<id> of the first node that does a match.
450
451 The 
452
453   anchored `de' at 1 floating `gh' at 3..2147483647 (checking floating) 
454         stclass `ANYOF[bc]' minlen 7 
455
456 line (split into two lines above) contains optimizer
457 information.  In the example shown, the optimizer found that the match 
458 should contain a substring C<de> at offset 1, plus substring C<gh>
459 at some offset between 3 and infinity.  Moreover, when checking for
460 these substrings (to abandon impossible matches quickly), Perl will check
461 for the substring C<gh> before checking for the substring C<de>.  The
462 optimizer may also use the knowledge that the match starts (at the
463 C<first> I<id>) with a character class, and no string 
464 shorter than 7 characters can possibly match.
465
466 The fields of interest which may appear in this line are
467
468 =over 4
469
470 =item C<anchored> I<STRING> C<at> I<POS>
471
472 =item C<floating> I<STRING> C<at> I<POS1..POS2>
473
474 See above.
475
476 =item C<matching floating/anchored>
477
478 Which substring to check first.
479
480 =item C<minlen>
481
482 The minimal length of the match.
483
484 =item C<stclass> I<TYPE>
485
486 Type of first matching node.
487
488 =item C<noscan>
489
490 Don't scan for the found substrings.
491
492 =item C<isall>
493
494 Means that the optimizer information is all that the regular
495 expression contains, and thus one does not need to enter the regex engine at
496 all.
497
498 =item C<GPOS>
499
500 Set if the pattern contains C<\G>.
501
502 =item C<plus> 
503
504 Set if the pattern starts with a repeated char (as in C<x+y>).
505
506 =item C<implicit>
507
508 Set if the pattern starts with C<.*>.
509
510 =item C<with eval> 
511
512 Set if the pattern contain eval-groups, such as C<(?{ code })> and
513 C<(??{ code })>.
514
515 =item C<anchored(TYPE)>
516
517 If the pattern may match only at a handful of places, (with C<TYPE>
518 being C<BOL>, C<MBOL>, or C<GPOS>.  See the table below.
519
520 =back
521
522 If a substring is known to match at end-of-line only, it may be
523 followed by C<$>, as in C<floating `k'$>.
524
525 The optimizer-specific information is used to avoid entering (a slow) regex
526 engine on strings that will not definitely match.  If the C<isall> flag
527 is set, a call to the regex engine may be avoided even when the optimizer
528 found an appropriate place for the match.
529
530 Above the optimizer section is the list of I<nodes> of the compiled
531 form of the regex.  Each line has format 
532
533 C<   >I<id>: I<TYPE> I<OPTIONAL-INFO> (I<next-id>)
534
535 =head2 Types of nodes
536
537 Here are the possible types, with short descriptions:
538
539     # TYPE arg-description [num-args] [longjump-len] DESCRIPTION
540
541     # Exit points
542     END         no      End of program.
543     SUCCEED     no      Return from a subroutine, basically.
544
545     # Anchors:
546     BOL         no      Match "" at beginning of line.
547     MBOL        no      Same, assuming multiline.
548     SBOL        no      Same, assuming singleline.
549     EOS         no      Match "" at end of string.
550     EOL         no      Match "" at end of line.
551     MEOL        no      Same, assuming multiline.
552     SEOL        no      Same, assuming singleline.
553     BOUND       no      Match "" at any word boundary
554     BOUNDL      no      Match "" at any word boundary
555     NBOUND      no      Match "" at any word non-boundary
556     NBOUNDL     no      Match "" at any word non-boundary
557     GPOS        no      Matches where last m//g left off.
558
559     # [Special] alternatives
560     ANY         no      Match any one character (except newline).
561     SANY        no      Match any one character.
562     ANYOF       sv      Match character in (or not in) this class.
563     ALNUM       no      Match any alphanumeric character
564     ALNUML      no      Match any alphanumeric char in locale
565     NALNUM      no      Match any non-alphanumeric character
566     NALNUML     no      Match any non-alphanumeric char in locale
567     SPACE       no      Match any whitespace character
568     SPACEL      no      Match any whitespace char in locale
569     NSPACE      no      Match any non-whitespace character
570     NSPACEL     no      Match any non-whitespace char in locale
571     DIGIT       no      Match any numeric character
572     NDIGIT      no      Match any non-numeric character
573
574     # BRANCH    The set of branches constituting a single choice are hooked
575     #           together with their "next" pointers, since precedence prevents
576     #           anything being concatenated to any individual branch.  The
577     #           "next" pointer of the last BRANCH in a choice points to the
578     #           thing following the whole choice.  This is also where the
579     #           final "next" pointer of each individual branch points; each
580     #           branch starts with the operand node of a BRANCH node.
581     #
582     BRANCH      node    Match this alternative, or the next...
583
584     # BACK      Normal "next" pointers all implicitly point forward; BACK
585     #           exists to make loop structures possible.
586     # not used
587     BACK        no      Match "", "next" ptr points backward.
588
589     # Literals
590     EXACT       sv      Match this string (preceded by length).
591     EXACTF      sv      Match this string, folded (prec. by length).
592     EXACTFL     sv      Match this string, folded in locale (w/len).
593
594     # Do nothing
595     NOTHING     no      Match empty string.
596     # A variant of above which delimits a group, thus stops optimizations
597     TAIL        no      Match empty string. Can jump here from outside.
598
599     # STAR,PLUS '?', and complex '*' and '+', are implemented as circular
600     #           BRANCH structures using BACK.  Simple cases (one character
601     #           per match) are implemented with STAR and PLUS for speed
602     #           and to minimize recursive plunges.
603     #
604     STAR        node    Match this (simple) thing 0 or more times.
605     PLUS        node    Match this (simple) thing 1 or more times.
606
607     CURLY       sv 2    Match this simple thing {n,m} times.
608     CURLYN      no 2    Match next-after-this simple thing 
609     #                   {n,m} times, set parens.
610     CURLYM      no 2    Match this medium-complex thing {n,m} times.
611     CURLYX      sv 2    Match this complex thing {n,m} times.
612
613     # This terminator creates a loop structure for CURLYX
614     WHILEM      no      Do curly processing and see if rest matches.
615
616     # OPEN,CLOSE,GROUPP ...are numbered at compile time.
617     OPEN        num 1   Mark this point in input as start of #n.
618     CLOSE       num 1   Analogous to OPEN.
619
620     REF         num 1   Match some already matched string
621     REFF        num 1   Match already matched string, folded
622     REFFL       num 1   Match already matched string, folded in loc.
623
624     # grouping assertions
625     IFMATCH     off 1 2 Succeeds if the following matches.
626     UNLESSM     off 1 2 Fails if the following matches.
627     SUSPEND     off 1 1 "Independent" sub-regex.
628     IFTHEN      off 1 1 Switch, should be preceded by switcher .
629     GROUPP      num 1   Whether the group matched.
630
631     # Support for long regex
632     LONGJMP     off 1 1 Jump far away.
633     BRANCHJ     off 1 1 BRANCH with long offset.
634
635     # The heavy worker
636     EVAL        evl 1   Execute some Perl code.
637
638     # Modifiers
639     MINMOD      no      Next operator is not greedy.
640     LOGICAL     no      Next opcode should set the flag only.
641
642     # This is not used yet
643     RENUM       off 1 1 Group with independently numbered parens.
644
645     # This is not really a node, but an optimized away piece of a "long" node.
646     # To simplify debugging output, we mark it as if it were a node
647     OPTIMIZED   off     Placeholder for dump.
648
649 =for unprinted-credits
650 Next section M-J. Dominus (mjd-perl-patch+@plover.com) 20010421
651
652 Following the optimizer information is a dump of the offset/length
653 table, here split across several lines:
654
655   Offsets: [45]
656         1[4] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 5[1]
657         0[0] 12[1] 0[0] 6[1] 0[0] 7[1] 0[0] 9[1] 8[1] 0[0] 10[1] 0[0]
658         11[1] 0[0] 12[0] 12[0] 13[1] 0[0] 14[4] 0[0] 0[0] 0[0] 0[0]
659         0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 18[1] 0[0] 19[1] 20[0]  
660
661 The first line here indicates that the offset/length table contains 45
662 entries.  Each entry is a pair of integers, denoted by C<offset[length]>.
663 Entries are numbered starting with 1, so entry #1 here is C<1[4]> and
664 entry #12 is C<5[1]>.  C<1[4]> indicates that the node labeled C<1:>
665 (the C<1: ANYOF[bc]>) begins at character position 1 in the
666 pre-compiled form of the regex, and has a length of 4 characters.
667 C<5[1]> in position 12 
668 indicates that the node labeled C<12:>
669 (the C<< 12: EXACT <d> >>) begins at character position 5 in the
670 pre-compiled form of the regex, and has a length of 1 character.
671 C<12[1]> in position 14 
672 indicates that the node labeled C<14:>
673 (the C<< 14: CURLYX[0] {1,32767} >>) begins at character position 12 in the
674 pre-compiled form of the regex, and has a length of 1 character---that
675 is, it corresponds to the C<+> symbol in the precompiled regex.
676
677 C<0[0]> items indicate that there is no corresponding node.
678
679 =head2 Run-time output
680
681 First of all, when doing a match, one may get no run-time output even
682 if debugging is enabled.  This means that the regex engine was never
683 entered and that all of the job was therefore done by the optimizer.
684
685 If the regex engine was entered, the output may look like this:
686
687   Matching `[bc]d(ef*g)+h[ij]k$' against `abcdefg__gh__'
688     Setting an EVAL scope, savestack=3
689      2 <ab> <cdefg__gh_>    |  1: ANYOF
690      3 <abc> <defg__gh_>    | 11: EXACT <d>
691      4 <abcd> <efg__gh_>    | 13: CURLYX {1,32767}
692      4 <abcd> <efg__gh_>    | 26:   WHILEM
693                                 0 out of 1..32767  cc=effff31c
694      4 <abcd> <efg__gh_>    | 15:     OPEN1
695      4 <abcd> <efg__gh_>    | 17:     EXACT <e>
696      5 <abcde> <fg__gh_>    | 19:     STAR
697                              EXACT <f> can match 1 times out of 32767...
698     Setting an EVAL scope, savestack=3
699      6 <bcdef> <g__gh__>    | 22:       EXACT <g>
700      7 <bcdefg> <__gh__>    | 24:       CLOSE1
701      7 <bcdefg> <__gh__>    | 26:       WHILEM
702                                     1 out of 1..32767  cc=effff31c
703     Setting an EVAL scope, savestack=12
704      7 <bcdefg> <__gh__>    | 15:         OPEN1
705      7 <bcdefg> <__gh__>    | 17:         EXACT <e>
706        restoring \1 to 4(4)..7
707                                     failed, try continuation...
708      7 <bcdefg> <__gh__>    | 27:         NOTHING
709      7 <bcdefg> <__gh__>    | 28:         EXACT <h>
710                                     failed...
711                                 failed...
712
713 The most significant information in the output is about the particular I<node>
714 of the compiled regex that is currently being tested against the target string.
715 The format of these lines is
716
717 C<    >I<STRING-OFFSET> <I<PRE-STRING>> <I<POST-STRING>>   |I<ID>:  I<TYPE>
718
719 The I<TYPE> info is indented with respect to the backtracking level.
720 Other incidental information appears interspersed within.
721
722 =head1 Debugging Perl memory usage
723
724 Perl is a profligate wastrel when it comes to memory use.  There
725 is a saying that to estimate memory usage of Perl, assume a reasonable
726 algorithm for memory allocation, multiply that estimate by 10, and
727 while you still may miss the mark, at least you won't be quite so
728 astonished.  This is not absolutely true, but may provide a good
729 grasp of what happens.
730
731 Assume that an integer cannot take less than 20 bytes of memory, a
732 float cannot take less than 24 bytes, a string cannot take less
733 than 32 bytes (all these examples assume 32-bit architectures, the
734 result are quite a bit worse on 64-bit architectures).  If a variable
735 is accessed in two of three different ways (which require an integer,
736 a float, or a string), the memory footprint may increase yet another
737 20 bytes.  A sloppy malloc(3) implementation can inflate these
738 numbers dramatically.
739
740 On the opposite end of the scale, a declaration like
741
742   sub foo;
743
744 may take up to 500 bytes of memory, depending on which release of Perl
745 you're running.
746
747 Anecdotal estimates of source-to-compiled code bloat suggest an
748 eightfold increase.  This means that the compiled form of reasonable
749 (normally commented, properly indented etc.) code will take
750 about eight times more space in memory than the code took
751 on disk.
752
753 The B<-DL> command-line switch is obsolete since circa Perl 5.6.0
754 (it was available only if Perl was built with C<-DDEBUGGING>).
755 The switch was used to track Perl's memory allocations and possible
756 memory leaks.  These days the use of malloc debugging tools like
757 F<Purify> or F<valgrind> is suggested instead.  See also
758 L<perlhack/PERL_MEM_LOG>.
759
760 One way to find out how much memory is being used by Perl data
761 structures is to install the Devel::Size module from CPAN: it gives
762 you the minimum number of bytes required to store a particular data
763 structure.  Please be mindful of the difference between the size()
764 and total_size().
765
766 If Perl has been compiled using Perl's malloc you can analyze Perl
767 memory usage by setting the $ENV{PERL_DEBUG_MSTATS}.
768
769 =head2 Using C<$ENV{PERL_DEBUG_MSTATS}>
770
771 If your perl is using Perl's malloc() and was compiled with the
772 necessary switches (this is the default), then it will print memory
773 usage statistics after compiling your code when C<< $ENV{PERL_DEBUG_MSTATS}
774 > 1 >>, and before termination of the program when C<<
775 $ENV{PERL_DEBUG_MSTATS} >= 1 >>.  The report format is similar to
776 the following example:
777
778   $ PERL_DEBUG_MSTATS=2 perl -e "require Carp"
779   Memory allocation statistics after compilation: (buckets 4(4)..8188(8192)
780      14216 free:   130   117    28     7     9   0   2     2   1 0 0
781                 437    61    36     0     5
782      60924 used:   125   137   161    55     7   8   6    16   2 0 1
783                  74   109   304    84    20
784   Total sbrk(): 77824/21:119. Odd ends: pad+heads+chain+tail: 0+636+0+2048.
785   Memory allocation statistics after execution:   (buckets 4(4)..8188(8192)
786      30888 free:   245    78    85    13     6   2   1     3   2 0 1
787                 315   162    39    42    11
788     175816 used:   265   176  1112   111    26  22  11    27   2 1 1
789                 196   178  1066   798    39
790   Total sbrk(): 215040/47:145. Odd ends: pad+heads+chain+tail: 0+2192+0+6144.
791
792 It is possible to ask for such a statistic at arbitrary points in
793 your execution using the mstat() function out of the standard
794 Devel::Peek module.
795
796 Here is some explanation of that format:
797
798 =over 4
799
800 =item C<buckets SMALLEST(APPROX)..GREATEST(APPROX)>
801
802 Perl's malloc() uses bucketed allocations.  Every request is rounded
803 up to the closest bucket size available, and a bucket is taken from
804 the pool of buckets of that size.
805
806 The line above describes the limits of buckets currently in use.
807 Each bucket has two sizes: memory footprint and the maximal size
808 of user data that can fit into this bucket.  Suppose in the above
809 example that the smallest bucket were size 4.  The biggest bucket
810 would have usable size 8188, and the memory footprint would be 8192.
811
812 In a Perl built for debugging, some buckets may have negative usable
813 size.  This means that these buckets cannot (and will not) be used.
814 For larger buckets, the memory footprint may be one page greater
815 than a power of 2.  If so, case the corresponding power of two is
816 printed in the C<APPROX> field above.
817
818 =item Free/Used
819
820 The 1 or 2 rows of numbers following that correspond to the number
821 of buckets of each size between C<SMALLEST> and C<GREATEST>.  In
822 the first row, the sizes (memory footprints) of buckets are powers
823 of two--or possibly one page greater.  In the second row, if present,
824 the memory footprints of the buckets are between the memory footprints
825 of two buckets "above".
826
827 For example, suppose under the previous example, the memory footprints
828 were
829
830      free:    8     16    32    64    128  256 512 1024 2048 4096 8192
831            4     12    24    48    80
832
833 With non-C<DEBUGGING> perl, the buckets starting from C<128> have
834 a 4-byte overhead, and thus an 8192-long bucket may take up to
835 8188-byte allocations.
836
837 =item C<Total sbrk(): SBRKed/SBRKs:CONTINUOUS>
838
839 The first two fields give the total amount of memory perl sbrk(2)ed
840 (ess-broken? :-) and number of sbrk(2)s used.  The third number is
841 what perl thinks about continuity of returned chunks.  So long as
842 this number is positive, malloc() will assume that it is probable
843 that sbrk(2) will provide continuous memory.
844
845 Memory allocated by external libraries is not counted.
846
847 =item C<pad: 0>
848
849 The amount of sbrk(2)ed memory needed to keep buckets aligned.
850
851 =item C<heads: 2192>
852
853 Although memory overhead of bigger buckets is kept inside the bucket, for
854 smaller buckets, it is kept in separate areas.  This field gives the
855 total size of these areas.
856
857 =item C<chain: 0>
858
859 malloc() may want to subdivide a bigger bucket into smaller buckets.
860 If only a part of the deceased bucket is left unsubdivided, the rest
861 is kept as an element of a linked list.  This field gives the total
862 size of these chunks.
863
864 =item C<tail: 6144>
865
866 To minimize the number of sbrk(2)s, malloc() asks for more memory.  This
867 field gives the size of the yet unused part, which is sbrk(2)ed, but
868 never touched.
869
870 =back
871
872 =head1 SEE ALSO
873
874 L<perldebug>,
875 L<perlguts>,
876 L<perlrun>
877 L<re>,
878 and
879 L<Devel::DProf>.