This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update IO-Compress to CPAN version 2.040
[perl5.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/"Configurable 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 using various values of C<n> are shown to give you a feel
261 for the difference between settings.  Long though 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
547  BOL        no      Match "" at beginning of line.
548  MBOL       no      Same, assuming multiline.
549  SBOL       no      Same, assuming singleline.
550  EOS        no      Match "" at end of string.
551  EOL        no      Match "" at end of line.
552  MEOL       no      Same, assuming multiline.
553  SEOL       no      Same, assuming singleline.
554  BOUND      no      Match "" at any word boundary using native charset
555                     semantics for non-utf8
556  BOUNDL     no      Match "" at any locale word boundary
557  BOUNDU     no      Match "" at any word boundary using Unicode semantics
558  BOUNDA     no      Match "" at any word boundary using ASCII semantics
559  NBOUND     no      Match "" at any word non-boundary using native charset
560                     semantics for non-utf8
561  NBOUNDL    no      Match "" at any locale word non-boundary
562  NBOUNDU    no      Match "" at any word non-boundary using Unicode semantics
563  NBOUNDA    no      Match "" at any word non-boundary using ASCII semantics
564  GPOS       no      Matches where last m//g left off.
565
566  # [Special] alternatives:
567
568  REG_ANY    no      Match any one character (except newline).
569  SANY       no      Match any one character.
570  CANY       no      Match any one byte.
571  ANYOF      sv      Match character in (or not in) this class, single char
572                     match only
573  ANYOFV     sv      Match character in (or not in) this class, can
574                     match-multiple chars
575  ALNUM      no      Match any alphanumeric character using native charset
576                     semantics for non-utf8
577  ALNUML     no      Match any alphanumeric char in locale
578  ALNUMU     no      Match any alphanumeric char using Unicode semantics
579  ALNUMA     no      Match [A-Za-z_0-9]
580  NALNUM     no      Match any non-alphanumeric character using native charset
581                     semantics for non-utf8
582  NALNUML    no      Match any non-alphanumeric char in locale
583  NALNUMU    no      Match any non-alphanumeric char using Unicode semantics
584  NALNUMA    no      Match [^A-Za-z_0-9]
585  SPACE      no      Match any whitespace character using native charset
586                     semantics for non-utf8
587  SPACEL     no      Match any whitespace char in locale
588  SPACEU     no      Match any whitespace char using Unicode semantics
589  SPACEA     no      Match [ \t\n\f\r]
590  NSPACE     no      Match any non-whitespace character using native charset
591                     semantics for non-utf8
592  NSPACEL    no      Match any non-whitespace char in locale
593  NSPACEU    no      Match any non-whitespace char using Unicode semantics
594  NSPACEA    no      Match [^ \t\n\f\r]
595  DIGIT      no      Match any numeric character using native charset semantics
596                     for non-utf8
597  DIGITL     no      Match any numeric character in locale
598  DIGITA     no      Match [0-9]
599  NDIGIT     no      Match any non-numeric character using native charset
600  i                  semantics for non-utf8
601  NDIGITL    no      Match any non-numeric character in locale
602  NDIGITA    no      Match [^0-9]
603  CLUMP      no      Match any extended grapheme cluster sequence
604
605  # Alternation
606
607  # BRANCH        The set of branches constituting a single choice are hooked
608  #               together with their "next" pointers, since precedence prevents
609  #               anything being concatenated to any individual branch.  The
610  #               "next" pointer of the last BRANCH in a choice points to the
611  #               thing following the whole choice.  This is also where the
612  #               final "next" pointer of each individual branch points; each
613  #               branch starts with the operand node of a BRANCH node.
614  #
615  BRANCH node        Match this alternative, or the next...
616
617  # Back pointer
618
619  # BACK          Normal "next" pointers all implicitly point forward; BACK
620  #               exists to make loop structures possible.
621  # not used
622  BACK       no      Match "", "next" ptr points backward.
623
624  # Literals
625
626  EXACT      str     Match this string (preceded by length).
627  EXACTF     str     Match this string, folded, native charset semantics for
628                     non-utf8 (prec. by length).
629  EXACTFL    str     Match this string, folded in locale (w/len).
630  EXACTFU    str     Match this string, folded, Unicode semantics for non-utf8
631                     (prec. by length).
632  EXACTFA    str     Match this string, folded, Unicode semantics for non-utf8,
633                     but no ASCII-range character matches outside ASCII (prec.
634                     by length),.
635
636  # Do nothing types
637
638  NOTHING    no        Match empty string.
639  # A variant of above which delimits a group, thus stops optimizations
640  TAIL       no        Match empty string. Can jump here from outside.
641
642  # Loops
643
644  # STAR,PLUS    '?', and complex '*' and '+', are implemented as circular
645  #               BRANCH structures using BACK.  Simple cases (one character
646  #               per match) are implemented with STAR and PLUS for speed
647  #               and to minimize recursive plunges.
648  #
649  STAR       node    Match this (simple) thing 0 or more times.
650  PLUS       node    Match this (simple) thing 1 or more times.
651
652  CURLY      sv 2    Match this simple thing {n,m} times.
653  CURLYN     no 2    Capture next-after-this simple thing
654  CURLYM     no 2    Capture this medium-complex thing {n,m} times.
655  CURLYX     sv 2    Match this complex thing {n,m} times.
656
657  # This terminator creates a loop structure for CURLYX
658  WHILEM     no      Do curly processing and see if rest matches.
659
660  # Buffer related
661
662  # OPEN,CLOSE,GROUPP     ...are numbered at compile time.
663  OPEN       num 1   Mark this point in input as start of #n.
664  CLOSE      num 1   Analogous to OPEN.
665
666  REF        num 1   Match some already matched string
667  REFF       num 1   Match already matched string, folded using native charset
668                     semantics for non-utf8
669  REFFL      num 1   Match already matched string, folded in loc.
670  REFFU      num 1   Match already matched string, folded using unicode
671                     semantics for non-utf8
672  REFFA      num 1   Match already matched string, folded using unicode
673                     semantics for non-utf8, no mixing ASCII, non-ASCII
674
675  # Named references.  Code in regcomp.c assumes that these all are after the
676  # numbered references
677  NREF       no-sv 1 Match some already matched string
678  NREFF      no-sv 1 Match already matched string, folded using native charset
679                     semantics for non-utf8
680  NREFFL     no-sv 1 Match already matched string, folded in loc.
681  NREFFU     num   1 Match already matched string, folded using unicode
682                     semantics for non-utf8
683  NREFFA     num   1 Match already matched string, folded using unicode
684                     semantics for non-utf8, no mixing ASCII, non-ASCII
685
686  IFMATCH    off 1 2 Succeeds if the following matches.
687  UNLESSM    off 1 2 Fails if the following matches.
688  SUSPEND    off 1 1 "Independent" sub-RE.
689  IFTHEN     off 1 1 Switch, should be preceded by switcher.
690  GROUPP     num 1   Whether the group matched.
691
692  # Support for long RE
693
694  LONGJMP    off 1 1 Jump far away.
695  BRANCHJ    off 1 1 BRANCH with long offset.
696
697  # The heavy worker
698
699  EVAL       evl 1   Execute some Perl code.
700
701  # Modifiers
702
703  MINMOD     no      Next operator is not greedy.
704  LOGICAL    no      Next opcode should set the flag only.
705
706  # This is not used yet
707  RENUM      off 1 1 Group with independently numbered parens.
708
709  # Trie Related
710
711  # Behave the same as A|LIST|OF|WORDS would. The '..C' variants have
712  # inline charclass data (ascii only), the 'C' store it in the structure.
713  # NOTE: the relative order of the TRIE-like regops  is significant
714
715  TRIE       trie 1    Match many EXACT(F[ALU]?)? at once. flags==type
716  TRIEC      charclass Same as TRIE, but with embedded charclass data
717
718  # For start classes, contains an added fail table.
719  AHOCORASICK trie 1   Aho Corasick stclass. flags==type
720  AHOCORASICKC charclass Same as AHOCORASICK, but with embedded charclass data
721
722  # Regex Subroutines
723  GOSUB      num/ofs 2L recurse to paren arg1 at (signed) ofs arg2
724  GOSTART    no         recurse to start of pattern
725
726  # Special conditionals
727  NGROUPP    no-sv 1   Whether the group matched.
728  INSUBP     num 1     Whether we are in a specific recurse.
729  DEFINEP    none 1    Never execute directly.
730
731  # Backtracking Verbs
732  ENDLIKE    none      Used only for the type field of verbs
733  OPFAIL     none      Same as (?!)
734  ACCEPT     parno 1   Accepts the current matched string.
735
736
737  # Verbs With Arguments
738  VERB       no-sv 1   Used only for the type field of verbs
739  PRUNE      no-sv 1   Pattern fails at this startpoint if no-backtracking through this
740  MARKPOINT  no-sv 1   Push the current location for rollback by cut.
741  SKIP       no-sv 1   On failure skip forward (to the mark) before retrying
742  COMMIT     no-sv 1   Pattern fails outright if backtracking through this
743  CUTGROUP   no-sv 1   On failure go to the next alternation in the group
744
745  # Control what to keep in $&.
746  KEEPS      no        $& begins here.
747
748  # New charclass like patterns
749  LNBREAK    none      generic newline pattern
750  VERTWS     none      vertical whitespace         (Perl 6)
751  NVERTWS    none      not vertical whitespace     (Perl 6)
752  HORIZWS    none      horizontal whitespace       (Perl 6)
753  NHORIZWS   none      not horizontal whitespace   (Perl 6)
754
755  FOLDCHAR   codepoint 1 codepoint with tricky case folding properties.
756
757  # SPECIAL  REGOPS
758
759  # This is not really a node, but an optimized away piece of a "long" node.
760  # To simplify debugging output, we mark it as if it were a node
761  OPTIMIZED  off       Placeholder for dump.
762
763  # Special opcode with the property that no opcode in a compiled program
764  # will ever be of this type. Thus it can be used as a flag value that
765  # no other opcode has been seen. END is used similarly, in that an END
766  # node cant be optimized. So END implies "unoptimizable" and PSEUDO mean
767  # "not seen anything to optimize yet".
768  PSEUDO     off       Pseudo opcode for internal use.
769
770 =for unprinted-credits
771 Next section M-J. Dominus (mjd-perl-patch+@plover.com) 20010421
772
773 Following the optimizer information is a dump of the offset/length
774 table, here split across several lines:
775
776   Offsets: [45]
777         1[4] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 5[1]
778         0[0] 12[1] 0[0] 6[1] 0[0] 7[1] 0[0] 9[1] 8[1] 0[0] 10[1] 0[0]
779         11[1] 0[0] 12[0] 12[0] 13[1] 0[0] 14[4] 0[0] 0[0] 0[0] 0[0]
780         0[0] 0[0] 0[0] 0[0] 0[0] 0[0] 18[1] 0[0] 19[1] 20[0]  
781
782 The first line here indicates that the offset/length table contains 45
783 entries.  Each entry is a pair of integers, denoted by C<offset[length]>.
784 Entries are numbered starting with 1, so entry #1 here is C<1[4]> and
785 entry #12 is C<5[1]>.  C<1[4]> indicates that the node labeled C<1:>
786 (the C<1: ANYOF[bc]>) begins at character position 1 in the
787 pre-compiled form of the regex, and has a length of 4 characters.
788 C<5[1]> in position 12 
789 indicates that the node labeled C<12:>
790 (the C<< 12: EXACT <d> >>) begins at character position 5 in the
791 pre-compiled form of the regex, and has a length of 1 character.
792 C<12[1]> in position 14 
793 indicates that the node labeled C<14:>
794 (the C<< 14: CURLYX[0] {1,32767} >>) begins at character position 12 in the
795 pre-compiled form of the regex, and has a length of 1 character---that
796 is, it corresponds to the C<+> symbol in the precompiled regex.
797
798 C<0[0]> items indicate that there is no corresponding node.
799
800 =head2 Run-time Output
801
802 First of all, when doing a match, one may get no run-time output even
803 if debugging is enabled.  This means that the regex engine was never
804 entered and that all of the job was therefore done by the optimizer.
805
806 If the regex engine was entered, the output may look like this:
807
808   Matching `[bc]d(ef*g)+h[ij]k$' against `abcdefg__gh__'
809     Setting an EVAL scope, savestack=3
810      2 <ab> <cdefg__gh_>    |  1: ANYOF
811      3 <abc> <defg__gh_>    | 11: EXACT <d>
812      4 <abcd> <efg__gh_>    | 13: CURLYX {1,32767}
813      4 <abcd> <efg__gh_>    | 26:   WHILEM
814                                 0 out of 1..32767  cc=effff31c
815      4 <abcd> <efg__gh_>    | 15:     OPEN1
816      4 <abcd> <efg__gh_>    | 17:     EXACT <e>
817      5 <abcde> <fg__gh_>    | 19:     STAR
818                              EXACT <f> can match 1 times out of 32767...
819     Setting an EVAL scope, savestack=3
820      6 <bcdef> <g__gh__>    | 22:       EXACT <g>
821      7 <bcdefg> <__gh__>    | 24:       CLOSE1
822      7 <bcdefg> <__gh__>    | 26:       WHILEM
823                                     1 out of 1..32767  cc=effff31c
824     Setting an EVAL scope, savestack=12
825      7 <bcdefg> <__gh__>    | 15:         OPEN1
826      7 <bcdefg> <__gh__>    | 17:         EXACT <e>
827        restoring \1 to 4(4)..7
828                                     failed, try continuation...
829      7 <bcdefg> <__gh__>    | 27:         NOTHING
830      7 <bcdefg> <__gh__>    | 28:         EXACT <h>
831                                     failed...
832                                 failed...
833
834 The most significant information in the output is about the particular I<node>
835 of the compiled regex that is currently being tested against the target string.
836 The format of these lines is
837
838 C<    >I<STRING-OFFSET> <I<PRE-STRING>> <I<POST-STRING>>   |I<ID>:  I<TYPE>
839
840 The I<TYPE> info is indented with respect to the backtracking level.
841 Other incidental information appears interspersed within.
842
843 =head1 Debugging Perl Memory Usage
844
845 Perl is a profligate wastrel when it comes to memory use.  There
846 is a saying that to estimate memory usage of Perl, assume a reasonable
847 algorithm for memory allocation, multiply that estimate by 10, and
848 while you still may miss the mark, at least you won't be quite so
849 astonished.  This is not absolutely true, but may provide a good
850 grasp of what happens.
851
852 Assume that an integer cannot take less than 20 bytes of memory, a
853 float cannot take less than 24 bytes, a string cannot take less
854 than 32 bytes (all these examples assume 32-bit architectures, the
855 result are quite a bit worse on 64-bit architectures).  If a variable
856 is accessed in two of three different ways (which require an integer,
857 a float, or a string), the memory footprint may increase yet another
858 20 bytes.  A sloppy malloc(3) implementation can inflate these
859 numbers dramatically.
860
861 On the opposite end of the scale, a declaration like
862
863   sub foo;
864
865 may take up to 500 bytes of memory, depending on which release of Perl
866 you're running.
867
868 Anecdotal estimates of source-to-compiled code bloat suggest an
869 eightfold increase.  This means that the compiled form of reasonable
870 (normally commented, properly indented etc.) code will take
871 about eight times more space in memory than the code took
872 on disk.
873
874 The B<-DL> command-line switch is obsolete since circa Perl 5.6.0
875 (it was available only if Perl was built with C<-DDEBUGGING>).
876 The switch was used to track Perl's memory allocations and possible
877 memory leaks.  These days the use of malloc debugging tools like
878 F<Purify> or F<valgrind> is suggested instead.  See also
879 L<perlhacktips/PERL_MEM_LOG>.
880
881 One way to find out how much memory is being used by Perl data
882 structures is to install the Devel::Size module from CPAN: it gives
883 you the minimum number of bytes required to store a particular data
884 structure.  Please be mindful of the difference between the size()
885 and total_size().
886
887 If Perl has been compiled using Perl's malloc you can analyze Perl
888 memory usage by setting $ENV{PERL_DEBUG_MSTATS}.
889
890 =head2 Using C<$ENV{PERL_DEBUG_MSTATS}>
891
892 If your perl is using Perl's malloc() and was compiled with the
893 necessary switches (this is the default), then it will print memory
894 usage statistics after compiling your code when C<< $ENV{PERL_DEBUG_MSTATS}
895 > 1 >>, and before termination of the program when C<<
896 $ENV{PERL_DEBUG_MSTATS} >= 1 >>.  The report format is similar to
897 the following example:
898
899   $ PERL_DEBUG_MSTATS=2 perl -e "require Carp"
900   Memory allocation statistics after compilation: (buckets 4(4)..8188(8192)
901      14216 free:   130   117    28     7     9   0   2     2   1 0 0
902                 437    61    36     0     5
903      60924 used:   125   137   161    55     7   8   6    16   2 0 1
904                  74   109   304    84    20
905   Total sbrk(): 77824/21:119. Odd ends: pad+heads+chain+tail: 0+636+0+2048.
906   Memory allocation statistics after execution:   (buckets 4(4)..8188(8192)
907      30888 free:   245    78    85    13     6   2   1     3   2 0 1
908                 315   162    39    42    11
909     175816 used:   265   176  1112   111    26  22  11    27   2 1 1
910                 196   178  1066   798    39
911   Total sbrk(): 215040/47:145. Odd ends: pad+heads+chain+tail: 0+2192+0+6144.
912
913 It is possible to ask for such a statistic at arbitrary points in
914 your execution using the mstat() function out of the standard
915 Devel::Peek module.
916
917 Here is some explanation of that format:
918
919 =over 4
920
921 =item C<buckets SMALLEST(APPROX)..GREATEST(APPROX)>
922
923 Perl's malloc() uses bucketed allocations.  Every request is rounded
924 up to the closest bucket size available, and a bucket is taken from
925 the pool of buckets of that size.
926
927 The line above describes the limits of buckets currently in use.
928 Each bucket has two sizes: memory footprint and the maximal size
929 of user data that can fit into this bucket.  Suppose in the above
930 example that the smallest bucket were size 4.  The biggest bucket
931 would have usable size 8188, and the memory footprint would be 8192.
932
933 In a Perl built for debugging, some buckets may have negative usable
934 size.  This means that these buckets cannot (and will not) be used.
935 For larger buckets, the memory footprint may be one page greater
936 than a power of 2.  If so, the corresponding power of two is
937 printed in the C<APPROX> field above.
938
939 =item Free/Used
940
941 The 1 or 2 rows of numbers following that correspond to the number
942 of buckets of each size between C<SMALLEST> and C<GREATEST>.  In
943 the first row, the sizes (memory footprints) of buckets are powers
944 of two--or possibly one page greater.  In the second row, if present,
945 the memory footprints of the buckets are between the memory footprints
946 of two buckets "above".
947
948 For example, suppose under the previous example, the memory footprints
949 were
950
951      free:    8     16    32    64    128  256 512 1024 2048 4096 8192
952            4     12    24    48    80
953
954 With a non-C<DEBUGGING> perl, the buckets starting from C<128> have
955 a 4-byte overhead, and thus an 8192-long bucket may take up to
956 8188-byte allocations.
957
958 =item C<Total sbrk(): SBRKed/SBRKs:CONTINUOUS>
959
960 The first two fields give the total amount of memory perl sbrk(2)ed
961 (ess-broken? :-) and number of sbrk(2)s used.  The third number is
962 what perl thinks about continuity of returned chunks.  So long as
963 this number is positive, malloc() will assume that it is probable
964 that sbrk(2) will provide continuous memory.
965
966 Memory allocated by external libraries is not counted.
967
968 =item C<pad: 0>
969
970 The amount of sbrk(2)ed memory needed to keep buckets aligned.
971
972 =item C<heads: 2192>
973
974 Although memory overhead of bigger buckets is kept inside the bucket, for
975 smaller buckets, it is kept in separate areas.  This field gives the
976 total size of these areas.
977
978 =item C<chain: 0>
979
980 malloc() may want to subdivide a bigger bucket into smaller buckets.
981 If only a part of the deceased bucket is left unsubdivided, the rest
982 is kept as an element of a linked list.  This field gives the total
983 size of these chunks.
984
985 =item C<tail: 6144>
986
987 To minimize the number of sbrk(2)s, malloc() asks for more memory.  This
988 field gives the size of the yet unused part, which is sbrk(2)ed, but
989 never touched.
990
991 =back
992
993 =head1 SEE ALSO
994
995 L<perldebug>,
996 L<perlguts>,
997 L<perlrun>
998 L<re>,
999 and
1000 L<Devel::DProf>.