Integrate with Sarathy.
[p5sagit/p5-mst-13.2.git] / pod / perldebug.pod
1 =head1 NAME
2
3 perldebug - Perl debugging
4
5 =head1 DESCRIPTION
6
7 First of all, have you tried using the B<-w> switch?
8
9 =head1 The Perl Debugger
10
11 "As soon as we started programming, we found to our
12 surprise that it wasn't as easy to get programs right
13 as we had thought.  Debugging had to be discovered.
14 I can remember the exact instant when I realized that
15 a large part of my life from then on was going to be
16 spent in finding mistakes in my own programs."
17
18 I<  --Maurice Wilkes, 1949>
19
20 If you invoke Perl with the B<-d> switch, your script runs under the
21 Perl source debugger.  This works like an interactive Perl
22 environment, prompting for debugger commands that let you examine
23 source code, set breakpoints, get stack backtraces, change the values of
24 variables, etc.  This is so convenient that you often fire up
25 the debugger all by itself just to test out Perl constructs
26 interactively to see what they do.  For example:
27
28     perl -d -e 42
29
30 In Perl, the debugger is not a separate program as it usually is in the
31 typical compiled environment.  Instead, the B<-d> flag tells the compiler
32 to insert source information into the parse trees it's about to hand off
33 to the interpreter.  That means your code must first compile correctly
34 for the debugger to work on it.  Then when the interpreter starts up, it
35 preloads a Perl library file containing the debugger itself.
36
37 The program will halt I<right before> the first run-time executable
38 statement (but see below regarding compile-time statements) and ask you
39 to enter a debugger command.  Contrary to popular expectations, whenever
40 the debugger halts and shows you a line of code, it always displays the
41 line it's I<about> to execute, rather than the one it has just executed.
42
43 Any command not recognized by the debugger is directly executed
44 (C<eval>'d) as Perl code in the current package.  (The debugger uses the
45 DB package for its own state information.)
46
47 Leading white space before a command would cause the debugger to think
48 it's I<NOT> a debugger command but for Perl, so be careful not to do
49 that.
50
51 =head2 Debugger Commands
52
53 The debugger understands the following commands:
54
55 =over 12
56
57 =item h [command]
58
59 Prints out a help message.
60
61 If you supply another debugger command as an argument to the C<h> command,
62 it prints out the description for just that command.  The special
63 argument of C<h h> produces a more compact help listing, designed to fit
64 together on one screen.
65
66 If the output of the C<h> command (or any command, for that matter) scrolls
67 past your screen, either precede the command with a leading pipe symbol so
68 it's run through your pager, as in
69
70     DB> |h
71
72 You may change the pager which is used via C<O pager=...> command.
73
74 =item p expr
75
76 Same as C<print {$DB::OUT} expr> in the current package.  In particular,
77 because this is just Perl's own B<print> function, this means that nested
78 data structures and objects are not dumped, unlike with the C<x> command.
79
80 The C<DB::OUT> filehandle is opened to F</dev/tty>, regardless of
81 where STDOUT may be redirected to.
82
83 =item x expr
84
85 Evaluates its expression in list context and dumps out the result
86 in a pretty-printed fashion.  Nested data structures are printed out
87 recursively, unlike the C<print> function.
88
89 The details of printout are governed by multiple C<O>ptions.
90
91 =item V [pkg [vars]]
92
93 Display all (or some) variables in package (defaulting to the C<main>
94 package) using a data pretty-printer (hashes show their keys and values so
95 you see what's what, control characters are made printable, etc.).  Make
96 sure you don't put the type specifier (like C<$>) there, just the symbol
97 names, like this:
98
99     V DB filename line
100
101 Use C<~pattern> and C<!pattern> for positive and negative regexps.
102
103 Nested data structures are printed out in a legible fashion, unlike
104 the C<print> function.
105
106 The details of printout are governed by multiple C<O>ptions.
107
108 =item X [vars]
109
110 Same as C<V currentpackage [vars]>.
111
112 =item T
113
114 Produce a stack backtrace.  See below for details on its output.
115
116 =item s [expr]
117
118 Single step.  Executes until it reaches the beginning of another
119 statement, descending into subroutine calls.  If an expression is
120 supplied that includes function calls, it too will be single-stepped.
121
122 =item n [expr]
123
124 Next.  Executes over subroutine calls, until it reaches the beginning
125 of the next statement.  If an expression is supplied that includes
126 function calls, those functions will be executed with stops before
127 each statement.
128
129 =item E<lt>CRE<gt>
130
131 Repeat last C<n> or C<s> command.
132
133 =item c [line|sub]
134
135 Continue, optionally inserting a one-time-only breakpoint
136 at the specified line or subroutine.
137
138 =item l
139
140 List next window of lines.
141
142 =item l min+incr
143
144 List C<incr+1> lines starting at C<min>.
145
146 =item l min-max
147
148 List lines C<min> through C<max>.  C<l E<45>> is synonymous to C<E<45>>.
149
150 =item l line
151
152 List a single line.
153
154 =item l subname
155
156 List first window of lines from subroutine.  I<subname> may
157 be a variable which contains a code reference.
158
159 =item -
160
161 List previous window of lines.
162
163 =item w [line]
164
165 List window (a few lines) around the current line.
166
167 =item .
168
169 Return debugger pointer to the last-executed line and
170 print it out.
171
172 =item f filename
173
174 Switch to viewing a different file or eval statement.  If C<filename>
175 is not a full filename as found in values of %INC, it is considered as
176 a regexp.
177
178 C<eval>ed strings (when accessible) are considered to be filenames:
179 C<f (eval 7)> and C<f eval 7\b> access the body of the 7th C<eval>ed string
180 (in the order of execution).  The bodies of currently executed C<eval>
181 and of C<eval>ed strings which define subroutines are saved, thus are
182 accessible by this mechanism.
183
184 =item /pattern/
185
186 Search forwards for pattern; final / is optional.
187
188 =item ?pattern?
189
190 Search backwards for pattern; final ? is optional.
191
192 =item L
193
194 List all breakpoints and actions.
195
196 =item S [[!]pattern]
197
198 List subroutine names [not] matching pattern.
199
200 =item t
201
202 Toggle trace mode (see also C<AutoTrace> C<O>ption).
203
204 =item t expr
205
206 Trace through execution of expr.  For example:
207
208  $ perl -de 42
209  Stack dump during die enabled outside of evals.
210
211  Loading DB routines from perl5db.pl patch level 0.94
212  Emacs support available.
213
214  Enter h or `h h' for help.
215
216  main::(-e:1):   0
217    DB<1> sub foo { 14 }
218
219    DB<2> sub bar { 3 }
220
221    DB<3> t print foo() * bar()
222  main::((eval 172):3):   print foo() + bar();
223  main::foo((eval 168):2):
224  main::bar((eval 170):2):
225  42
226
227 or, with the C<O>ption C<frame=2> set,
228
229    DB<4> O f=2
230                 frame = '2'
231    DB<5> t print foo() * bar()
232  3:      foo() * bar()
233  entering main::foo
234   2:     sub foo { 14 };
235  exited main::foo
236  entering main::bar
237   2:     sub bar { 3 };
238  exited main::bar
239  42
240
241 =item b [line] [condition]
242
243 Set a breakpoint.  If line is omitted, sets a breakpoint on the line
244 that is about to be executed.  If a condition is specified, it's
245 evaluated each time the statement is reached and a breakpoint is taken
246 only if the condition is true.  Breakpoints may be set on only lines
247 that begin an executable statement.  Conditions don't use B<if>:
248
249     b 237 $x > 30
250     b 237 ++$count237 < 11
251     b 33 /pattern/i
252
253 =item b subname [condition]
254
255 Set a breakpoint at the first line of the named subroutine.  I<subname> may
256 be a variable which contains a code reference (in this case I<condition>
257 is not supported).
258
259 =item b postpone subname [condition]
260
261 Set breakpoint at first line of subroutine after it is compiled.
262
263 =item b load filename
264
265 Set breakpoint at the first executed line of the file.  Filename should
266 be a full name as found in values of %INC.
267
268 =item b compile subname
269
270 Sets breakpoint at the first statement executed after the subroutine
271 is compiled.
272
273 =item d [line]
274
275 Delete a breakpoint at the specified line.  If line is omitted, deletes
276 the breakpoint on the line that is about to be executed.
277
278 =item D
279
280 Delete all installed breakpoints.
281
282 =item a [line] command
283
284 Set an action to be done before the line is executed.
285 The sequence of steps taken by the debugger is
286
287   1. check for a breakpoint at this line
288   2. print the line if necessary (tracing)
289   3. do any actions associated with that line
290   4. prompt user if at a breakpoint or in single-step
291   5. evaluate line
292
293 For example, this will print out $foo every time line
294 53 is passed:
295
296     a 53 print "DB FOUND $foo\n"
297
298 =item A
299
300 Delete all installed actions.
301
302 =item W [expr]
303
304 Add a global watch-expression.
305
306 =item W
307
308 Delete all watch-expressions.
309
310 =item r
311
312 Continue until return from the current subroutine, and dump the return value.
313
314 =item O [opt[=val]] [opt"val"] [opt?]...
315
316 Set or query values of options.  val defaults to 1.  opt can
317 be abbreviated.  Several options can be listed.
318
319 =over 12
320
321 =item C<recallCommand>, C<ShellBang>
322
323 The characters used to recall command or spawn shell.  By
324 default, these are both set to C<!>.
325
326 =item C<pager>
327
328 Program to use for output of pager-piped commands (those
329 beginning with a C<|> character.)  By default,
330 C<$ENV{PAGER}> will be used.
331
332 =item C<tkRunning>
333
334 Run Tk while prompting (with ReadLine).
335
336 =item C<signalLevel>, C<warnLevel>, C<dieLevel>
337
338 Level of verbosity.  By default the debugger is in a sane verbose mode,
339 thus it will print backtraces on all the warnings and die-messages
340 which are going to be printed out, and will print a message when
341 interesting uncaught signals arrive.
342
343 To disable this behaviour, set these values to 0.  If C<dieLevel> is 2,
344 then the messages which will be caught by surrounding C<eval> are also
345 printed.
346
347 =item C<AutoTrace>
348
349 Trace mode (similar to C<t> command, but can be put into
350 C<PERLDB_OPTS>).
351
352 =item C<LineInfo>
353
354 File or pipe to print line number info to.  If it is a pipe (say,
355 C<|visual_perl_db>), then a short, "emacs like" message is used.
356
357 =item C<inhibit_exit>
358
359 If 0, allows I<stepping off> the end of the script.
360
361 =item C<PrintRet>
362
363 affects printing of return value after C<r> command.
364
365 =item C<ornaments>
366
367 affects screen appearance of the command line (see L<Term::ReadLine>).
368
369 =item C<frame>
370
371 affects printing messages on entry and exit from subroutines.  If
372 C<frame & 2> is false, messages are printed on entry only. (Printing
373 on exit may be useful if inter(di)spersed with other messages.)
374
375 If C<frame & 4>, arguments to functions are printed as well as the
376 context and caller info.  If C<frame & 8>, overloaded C<stringify> and
377 C<tie>d C<FETCH> are enabled on the printed arguments. If C<frame &
378 16>, the return value from the subroutine is printed as well.
379
380 The length at which the argument list is truncated is governed by the
381 next option:
382
383 =item C<maxTraceLen>
384
385 length at which the argument list is truncated when C<frame> option's
386 bit 4 is set.
387
388 =back
389
390 The following options affect what happens with C<V>, C<X>, and C<x>
391 commands:
392
393 =over 12
394
395 =item C<arrayDepth>, C<hashDepth>
396
397 Print only first N elements ('' for all).
398
399 =item C<compactDump>, C<veryCompact>
400
401 Change style of array and hash dump.  If C<compactDump>, short array
402 may be printed on one line.
403
404 =item C<globPrint>
405
406 Whether to print contents of globs.
407
408 =item C<DumpDBFiles>
409
410 Dump arrays holding debugged files.
411
412 =item C<DumpPackages>
413
414 Dump symbol tables of packages.
415
416 =item C<DumpReused>
417
418 Dump contents of "reused" addresses.
419
420 =item C<quote>, C<HighBit>, C<undefPrint>
421
422 Change style of string dump.  Default value of C<quote> is C<auto>, one
423 can enable either double-quotish dump, or single-quotish by setting it
424 to C<"> or C<'>.  By default, characters with high bit set are printed
425 I<as is>.
426
427 =item C<UsageOnly>
428
429 I<very> rudimentally per-package memory usage dump.  Calculates total
430 size of strings in variables in the package.
431
432 =back
433
434 During startup options are initialized from C<$ENV{PERLDB_OPTS}>.
435 You can put additional initialization options C<TTY>, C<noTTY>,
436 C<ReadLine>, and C<NonStop> there.
437
438 Example rc file:
439
440   &parse_options("NonStop=1 LineInfo=db.out AutoTrace");
441
442 The script will run without human intervention, putting trace information
443 into the file I<db.out>.  (If you interrupt it, you would better reset
444 C<LineInfo> to something "interactive"!)
445
446 =over 12
447
448 =item C<TTY>
449
450 The TTY to use for debugging I/O.
451
452 =item C<noTTY>
453
454 If set, goes in C<NonStop> mode, and would not connect to a TTY.  If
455 interrupt (or if control goes to debugger via explicit setting of
456 $DB::signal or $DB::single from the Perl script), connects to a TTY
457 specified by the C<TTY> option at startup, or to a TTY found at
458 runtime using C<Term::Rendezvous> module of your choice.
459
460 This module should implement a method C<new> which returns an object
461 with two methods: C<IN> and C<OUT>, returning two filehandles to use
462 for debugging input and output correspondingly.  Method C<new> may
463 inspect an argument which is a value of C<$ENV{PERLDB_NOTTY}> at
464 startup, or is C<"/tmp/perldbtty$$"> otherwise.
465
466 =item C<ReadLine>
467
468 If false, readline support in debugger is disabled, so you can debug
469 ReadLine applications.
470
471 =item C<NonStop>
472
473 If set, debugger goes into noninteractive mode until interrupted, or
474 programmatically by setting $DB::signal or $DB::single.
475
476 =back
477
478 Here's an example of using the C<$ENV{PERLDB_OPTS}> variable:
479
480   $ PERLDB_OPTS="N f=2" perl -d myprogram
481
482 will run the script C<myprogram> without human intervention, printing
483 out the call tree with entry and exit points.  Note that C<N f=2> is
484 equivalent to C<NonStop=1 frame=2>.  Note also that at the moment when
485 this documentation was written all the options to the debugger could
486 be uniquely abbreviated by the first letter (with exception of
487 C<Dump*> options).
488
489 Other examples may include
490
491   $ PERLDB_OPTS="N f A L=listing" perl -d myprogram
492
493 - runs script noninteractively, printing info on each entry into a
494 subroutine and each executed line into the file F<listing>. (If you
495 interrupt it, you would better reset C<LineInfo> to something
496 "interactive"!)
497
498
499   $ env "PERLDB_OPTS=R=0 TTY=/dev/ttyc" perl -d myprogram
500
501 may be useful for debugging a program which uses C<Term::ReadLine>
502 itself.  Do not forget detach shell from the TTY in the window which
503 corresponds to F</dev/ttyc>, say, by issuing a command like
504
505   $ sleep 1000000
506
507 See L<"Debugger Internals"> below for more details.
508
509 =item E<lt> [ command ]
510
511 Set an action (Perl command) to happen before every debugger prompt.
512 A multi-line command may be entered by backslashing the newlines.  If
513 C<command> is missing, resets the list of actions.
514
515 =item E<lt>E<lt> command
516
517 Add an action (Perl command) to happen before every debugger prompt.
518 A multi-line command may be entered by backslashing the newlines.
519
520 =item E<gt> command
521
522 Set an action (Perl command) to happen after the prompt when you've
523 just given a command to return to executing the script.  A multi-line
524 command may be entered by backslashing the newlines.  If C<command> is
525 missing, resets the list of actions.
526
527 =item E<gt>E<gt> command
528
529 Adds an action (Perl command) to happen after the prompt when you've
530 just given a command to return to executing the script.  A multi-line
531 command may be entered by backslashing the newlines.
532
533 =item { [ command ]
534
535 Set an action (debugger command) to happen before every debugger prompt.
536 A multi-line command may be entered by backslashing the newlines.  If
537 C<command> is missing, resets the list of actions.
538
539 =item {{ command
540
541 Add an action (debugger command) to happen before every debugger prompt.
542 A multi-line command may be entered by backslashing the newlines.
543
544 =item ! number
545
546 Redo a previous command (default previous command).
547
548 =item ! -number
549
550 Redo number'th-to-last command.
551
552 =item ! pattern
553
554 Redo last command that started with pattern.
555 See C<O recallCommand>, too.
556
557 =item !! cmd
558
559 Run cmd in a subprocess (reads from DB::IN, writes to DB::OUT)
560 See C<O shellBang> too.
561
562 =item H -number
563
564 Display last n commands.  Only commands longer than one character are
565 listed.  If number is omitted, lists them all.
566
567 =item q or ^D
568
569 Quit.  ("quit" doesn't work for this.)  This is the only supported way
570 to exit the debugger, though typing C<exit> twice may do it too.
571
572 Set an C<O>ption C<inhibit_exit> to 0 if you want to be able to I<step
573 off> the end the script.  You may also need to set $finished to 0 at
574 some moment if you want to step through global destruction.
575
576 =item R
577
578 Restart the debugger by B<exec>ing a new session.  It tries to maintain
579 your history across this, but internal settings and command line options
580 may be lost.
581
582 Currently the following setting are preserved: history, breakpoints,
583 actions, debugger C<O>ptions, and the following command line
584 options: B<-w>, B<-I>, and B<-e>.
585
586 =item |dbcmd
587
588 Run debugger command, piping DB::OUT to current pager.
589
590 =item ||dbcmd
591
592 Same as C<|dbcmd> but DB::OUT is temporarily B<select>ed as well.
593 Often used with commands that would otherwise produce long
594 output, such as
595
596     |V main
597
598 =item = [alias value]
599
600 Define a command alias, like
601
602     = quit q
603
604 or list current aliases.
605
606 =item command
607
608 Execute command as a Perl statement.  A missing semicolon will be
609 supplied.
610
611 =item m expr
612
613 The expression is evaluated, and the methods which may be applied to
614 the result are listed.
615
616 =item m package
617
618 The methods which may be applied to objects in the C<package> are listed.
619
620 =back
621
622 =head2 Debugger input/output
623
624 =over 8
625
626 =item Prompt
627
628 The debugger prompt is something like
629
630     DB<8>
631
632 or even
633
634     DB<<17>>
635
636 where that number is the command number, which you'd use to access with
637 the builtin B<csh>-like history mechanism, e.g., C<!17> would repeat
638 command number 17.  The number of angle brackets indicates the depth of
639 the debugger.  You could get more than one set of brackets, for example, if
640 you'd already at a breakpoint and then printed out the result of a
641 function call that itself also has a breakpoint, or you step into an
642 expression via C<s/n/t expression> command.
643
644 =item Multiline commands
645
646 If you want to enter a multi-line command, such as a subroutine
647 definition with several statements, or a format, you may escape the
648 newline that would normally end the debugger command with a backslash.
649 Here's an example:
650
651       DB<1> for (1..4) {         \
652       cont:     print "ok\n";   \
653       cont: }
654       ok
655       ok
656       ok
657       ok
658
659 Note that this business of escaping a newline is specific to interactive
660 commands typed into the debugger.
661
662 =item Stack backtrace
663
664 Here's an example of what a stack backtrace via C<T> command might
665 look like:
666
667     $ = main::infested called from file `Ambulation.pm' line 10
668     @ = Ambulation::legs(1, 2, 3, 4) called from file `camel_flea' line 7
669     $ = main::pests('bactrian', 4) called from file `camel_flea' line 4
670
671 The left-hand character up there tells whether the function was called
672 in a scalar or list context (we bet you can tell which is which).  What
673 that says is that you were in the function C<main::infested> when you ran
674 the stack dump, and that it was called in a scalar context from line 10
675 of the file I<Ambulation.pm>, but without any arguments at all, meaning
676 it was called as C<&infested>.  The next stack frame shows that the
677 function C<Ambulation::legs> was called in a list context from the
678 I<camel_flea> file with four arguments.  The last stack frame shows that
679 C<main::pests> was called in a scalar context, also from I<camel_flea>,
680 but from line 4.
681
682 Note that if you execute C<T> command from inside an active C<use>
683 statement, the backtrace will contain both C<require>
684 frame and an C<eval>) frame.
685
686 =item Listing
687
688 Listing given via different flavors of C<l> command looks like this:
689
690     DB<<13>> l
691   101:                @i{@i} = ();
692   102:b               @isa{@i,$pack} = ()
693   103                     if(exists $i{$prevpack} || exists $isa{$pack});
694   104             }
695   105
696   106             next
697   107==>              if(exists $isa{$pack});
698   108
699   109:a           if ($extra-- > 0) {
700   110:                %isa = ($pack,1);
701
702 Note that the breakable lines are marked with C<:>, lines with
703 breakpoints are marked by C<b>, with actions by C<a>, and the
704 next executed line is marked by C<==E<gt>>.
705
706 =item Frame listing
707
708 When C<frame> option is set, debugger would print entered (and
709 optionally exited) subroutines in different styles.
710
711 What follows is the start of the listing of
712
713   env "PERLDB_OPTS=f=n N" perl -d -V
714
715 for different values of C<n>:
716
717 =over 4
718
719 =item 1
720
721   entering main::BEGIN
722    entering Config::BEGIN
723     Package lib/Exporter.pm.
724     Package lib/Carp.pm.
725    Package lib/Config.pm.
726    entering Config::TIEHASH
727    entering Exporter::import
728     entering Exporter::export
729   entering Config::myconfig
730    entering Config::FETCH
731    entering Config::FETCH
732    entering Config::FETCH
733    entering Config::FETCH
734
735 =item 2
736
737   entering main::BEGIN
738    entering Config::BEGIN
739     Package lib/Exporter.pm.
740     Package lib/Carp.pm.
741    exited Config::BEGIN
742    Package lib/Config.pm.
743    entering Config::TIEHASH
744    exited Config::TIEHASH
745    entering Exporter::import
746     entering Exporter::export
747     exited Exporter::export
748    exited Exporter::import
749   exited main::BEGIN
750   entering Config::myconfig
751    entering Config::FETCH
752    exited Config::FETCH
753    entering Config::FETCH
754    exited Config::FETCH
755    entering Config::FETCH
756
757 =item 4
758
759   in  $=main::BEGIN() from /dev/nul:0
760    in  $=Config::BEGIN() from lib/Config.pm:2
761     Package lib/Exporter.pm.
762     Package lib/Carp.pm.
763    Package lib/Config.pm.
764    in  $=Config::TIEHASH('Config') from lib/Config.pm:644
765    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
766     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from li
767   in  @=Config::myconfig() from /dev/nul:0
768    in  $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
769    in  $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
770    in  $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574
771    in  $=Config::FETCH(ref(Config), 'PERL_SUBVERSION') from lib/Config.pm:574
772    in  $=Config::FETCH(ref(Config), 'osname') from lib/Config.pm:574
773    in  $=Config::FETCH(ref(Config), 'osvers') from lib/Config.pm:574
774
775 =item 6
776
777   in  $=main::BEGIN() from /dev/nul:0
778    in  $=Config::BEGIN() from lib/Config.pm:2
779     Package lib/Exporter.pm.
780     Package lib/Carp.pm.
781    out $=Config::BEGIN() from lib/Config.pm:0
782    Package lib/Config.pm.
783    in  $=Config::TIEHASH('Config') from lib/Config.pm:644
784    out $=Config::TIEHASH('Config') from lib/Config.pm:644
785    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
786     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/
787     out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/
788    out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
789   out $=main::BEGIN() from /dev/nul:0
790   in  @=Config::myconfig() from /dev/nul:0
791    in  $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
792    out $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
793    in  $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
794    out $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
795    in  $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574
796    out $=Config::FETCH(ref(Config), 'PERL_VERSION') from lib/Config.pm:574
797    in  $=Config::FETCH(ref(Config), 'PERL_SUBVERSION') from lib/Config.pm:574
798
799 =item 14
800
801   in  $=main::BEGIN() from /dev/nul:0
802    in  $=Config::BEGIN() from lib/Config.pm:2
803     Package lib/Exporter.pm.
804     Package lib/Carp.pm.
805    out $=Config::BEGIN() from lib/Config.pm:0
806    Package lib/Config.pm.
807    in  $=Config::TIEHASH('Config') from lib/Config.pm:644
808    out $=Config::TIEHASH('Config') from lib/Config.pm:644
809    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
810     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E
811     out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E
812    out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
813   out $=main::BEGIN() from /dev/nul:0
814   in  @=Config::myconfig() from /dev/nul:0
815    in  $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574
816    out $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574
817    in  $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574
818    out $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574
819
820 =item 30
821
822   in  $=CODE(0x15eca4)() from /dev/null:0
823    in  $=CODE(0x182528)() from lib/Config.pm:2
824     Package lib/Exporter.pm.
825    out $=CODE(0x182528)() from lib/Config.pm:0
826    scalar context return from CODE(0x182528): undef
827    Package lib/Config.pm.
828    in  $=Config::TIEHASH('Config') from lib/Config.pm:628
829    out $=Config::TIEHASH('Config') from lib/Config.pm:628
830    scalar context return from Config::TIEHASH:   empty hash
831    in  $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
832     in  $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/Exporter.pm:171
833     out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/Exporter.pm:171
834     scalar context return from Exporter::export: ''
835    out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/null:0
836    scalar context return from Exporter::import: ''
837
838
839 =back
840
841 In all the cases indentation of lines shows the call tree, if bit 2 of
842 C<frame> is set, then a line is printed on exit from a subroutine as
843 well, if bit 4 is set, then the arguments are printed as well as the
844 caller info, if bit 8 is set, the arguments are printed even if they
845 are tied or references, if bit 16 is set, the return value is printed
846 as well.
847
848 When a package is compiled, a line like this
849
850     Package lib/Carp.pm.
851
852 is printed with proper indentation.
853
854 =back
855
856 =head2 Debugging compile-time statements
857
858 If you have any compile-time executable statements (code within a BEGIN
859 block or a C<use> statement), these will C<NOT> be stopped by debugger,
860 although C<require>s will (and compile-time statements can be traced
861 with C<AutoTrace> option set in C<PERLDB_OPTS>).  From your own Perl
862 code, however, you can
863 transfer control back to the debugger using the following statement,
864 which is harmless if the debugger is not running:
865
866     $DB::single = 1;
867
868 If you set C<$DB::single> to the value 2, it's equivalent to having
869 just typed the C<n> command, whereas a value of 1 means the C<s>
870 command.  The C<$DB::trace>  variable should be set to 1 to simulate
871 having typed the C<t> command.
872
873 Another way to debug compile-time code is to start debugger, set a
874 breakpoint on I<load> of some module thusly
875
876     DB<7> b load f:/perllib/lib/Carp.pm
877   Will stop on load of `f:/perllib/lib/Carp.pm'.
878
879 and restart debugger by C<R> command (if possible).  One can use C<b
880 compile subname> for the same purpose.
881
882 =head2 Debugger Customization
883
884 Most probably you do not want to modify the debugger, it contains enough
885 hooks to satisfy most needs.  You may change the behaviour of debugger
886 from the debugger itself, using C<O>ptions, from the command line via
887 C<PERLDB_OPTS> environment variable, and from I<customization files>.
888
889 You can do some customization by setting up a F<.perldb> file which
890 contains initialization code.  For instance, you could make aliases
891 like these (the last one is one people expect to be there):
892
893     $DB::alias{'len'}  = 's/^len(.*)/p length($1)/';
894     $DB::alias{'stop'} = 's/^stop (at|in)/b/';
895     $DB::alias{'ps'}   = 's/^ps\b/p scalar /';
896     $DB::alias{'quit'} = 's/^quit(\s*)/exit\$/';
897
898 One changes options from F<.perldb> file via calls like this one;
899
900     parse_options("NonStop=1 LineInfo=db.out AutoTrace=1 frame=2");
901
902 (the code is executed in the package C<DB>).  Note that F<.perldb> is
903 processed before processing C<PERLDB_OPTS>.  If F<.perldb> defines the
904 subroutine C<afterinit>, it is called after all the debugger
905 initialization ends.  F<.perldb> may be contained in the current
906 directory, or in the C<LOGDIR>/C<HOME> directory.
907
908 If you want to modify the debugger, copy F<perl5db.pl> from the Perl
909 library to another name and modify it as necessary.  You'll also want
910 to set your C<PERL5DB> environment variable to say something like this:
911
912     BEGIN { require "myperl5db.pl" }
913
914 As the last resort, one can use C<PERL5DB> to customize debugger by
915 directly setting internal variables or calling debugger functions.
916
917 =head2 Readline Support
918
919 As shipped, the only command line history supplied is a simplistic one
920 that checks for leading exclamation points.  However, if you install
921 the Term::ReadKey and Term::ReadLine modules from CPAN, you will
922 have full editing capabilities much like GNU I<readline>(3) provides.
923 Look for these in the F<modules/by-module/Term> directory on CPAN.
924
925 A rudimentary command line completion is also available.
926 Unfortunately, the names of lexical variables are not available for
927 completion.
928
929 =head2 Editor Support for Debugging
930
931 If you have GNU B<emacs> installed on your system, it can interact with
932 the Perl debugger to provide an integrated software development
933 environment reminiscent of its interactions with C debuggers.
934
935 Perl is also delivered with a start file for making B<emacs> act like a
936 syntax-directed editor that understands (some of) Perl's syntax.  Look in
937 the I<emacs> directory of the Perl source distribution.
938
939 (Historically, a similar setup for interacting with B<vi> and the
940 X11 window system had also been available, but at the time of this
941 writing, no debugger support for B<vi> currently exists.)
942
943 =head2 The Perl Profiler
944
945 If you wish to supply an alternative debugger for Perl to run, just
946 invoke your script with a colon and a package argument given to the B<-d>
947 flag.  One of the most popular alternative debuggers for Perl is
948 B<DProf>, the Perl profiler.   As of this writing, B<DProf> is not
949 included with the standard Perl distribution, but it is expected to
950 be included soon, for certain values of "soon".
951
952 Meanwhile, you can fetch the Devel::Dprof module from CPAN.  Assuming
953 it's properly installed on your system, to profile your Perl program in
954 the file F<mycode.pl>, just type:
955
956     perl -d:DProf mycode.pl
957
958 When the script terminates the profiler will dump the profile information
959 to a file called F<tmon.out>.  A tool like B<dprofpp> (also supplied with
960 the Devel::DProf package) can be used to interpret the information which is
961 in that profile.
962
963 =head2 Debugger support in perl
964
965 When you call the B<caller> function (see L<perlfunc/caller>) from the
966 package DB, Perl sets the array @DB::args to contain the arguments the
967 corresponding stack frame was called with.
968
969 If perl is run with B<-d> option, the following additional features
970 are enabled (cf. L<perlvar/$^P>):
971
972 =over
973
974 =item *
975
976 Perl inserts the contents of C<$ENV{PERL5DB}> (or C<BEGIN {require
977 'perl5db.pl'}> if not present) before the first line of the
978 application.
979
980 =item *
981
982 The array C<@{"_E<lt>$filename"}> is the line-by-line contents of
983 $filename for all the compiled files.  Same for C<eval>ed strings which
984 contain subroutines, or which are currently executed.  The $filename
985 for C<eval>ed strings looks like C<(eval 34)>.
986
987 =item *
988
989 The hash C<%{"_E<lt>$filename"}> contains breakpoints and action (it is
990 keyed by line number), and individual entries are settable (as opposed
991 to the whole hash).  Only true/false is important to Perl, though the
992 values used by F<perl5db.pl> have the form
993 C<"$break_condition\0$action">.  Values are magical in numeric context:
994 they are zeros if the line is not breakable.
995
996 Same for evaluated strings which contain subroutines, or which are
997 currently executed.  The $filename for C<eval>ed strings looks like
998 C<(eval 34)>.
999
1000 =item *
1001
1002 The scalar C<${"_E<lt>$filename"}> contains C<"_E<lt>$filename">.  Same for
1003 evaluated strings which contain subroutines, or which are currently
1004 executed.  The $filename for C<eval>ed strings looks like C<(eval
1005 34)>.
1006
1007 =item *
1008
1009 After each C<require>d file is compiled, but before it is executed,
1010 C<DB::postponed(*{"_E<lt>$filename"})> is called (if subroutine
1011 C<DB::postponed> exists).  Here the $filename is the expanded name of
1012 the C<require>d file (as found in values of %INC).
1013
1014 =item *
1015
1016 After each subroutine C<subname> is compiled existence of
1017 C<$DB::postponed{subname}> is checked.  If this key exists,
1018 C<DB::postponed(subname)> is called (if subroutine C<DB::postponed>
1019 exists).
1020
1021 =item *
1022
1023 A hash C<%DB::sub> is maintained, with keys being subroutine names,
1024 values having the form C<filename:startline-endline>.  C<filename> has
1025 the form C<(eval 31)> for subroutines defined inside C<eval>s.
1026
1027 =item *
1028
1029 When execution of the application reaches a place that can have
1030 a breakpoint, a call to C<DB::DB()> is performed if any one of
1031 variables $DB::trace, $DB::single, or $DB::signal is true. (Note that
1032 these variables are not C<local>izable.) This feature is disabled when
1033 the control is inside C<DB::DB()> or functions called from it (unless
1034 C<$^D & (1E<lt>E<lt>30)>).
1035
1036 =item *
1037
1038 When execution of the application reaches a subroutine call, a call
1039 to C<&DB::sub>(I<args>) is performed instead, with C<$DB::sub> being
1040 the name of the called subroutine. (Unless the subroutine is compiled
1041 in the package C<DB>.)
1042
1043 =back
1044
1045 Note that if C<&DB::sub> needs some external data to be setup for it
1046 to work, no subroutine call is possible until this is done.  For the
1047 standard debugger C<$DB::deep> (how many levels of recursion deep into
1048 the debugger you can go before a mandatory break) gives an example of
1049 such a dependency.
1050
1051 The minimal working debugger consists of one line
1052
1053   sub DB::DB {}
1054
1055 which is quite handy as contents of C<PERL5DB> environment
1056 variable:
1057
1058   env "PERL5DB=sub DB::DB {}" perl -d your-script
1059
1060 Another (a little bit more useful) minimal debugger can be created
1061 with the only line being
1062
1063   sub DB::DB {print ++$i; scalar <STDIN>}
1064
1065 This debugger would print the sequential number of encountered
1066 statement, and would wait for your C<CR> to continue.
1067
1068 The following debugger is quite functional:
1069
1070   {
1071     package DB;
1072     sub DB  {}
1073     sub sub {print ++$i, " $sub\n"; &$sub}
1074   }
1075
1076 It prints the sequential number of subroutine call and the name of the
1077 called subroutine.  Note that C<&DB::sub> should be compiled into the
1078 package C<DB>.
1079
1080 =head2 Debugger Internals
1081
1082 At the start, the debugger reads your rc file (F<./.perldb> or
1083 F<~/.perldb> under Unix), which can set important options.  This file may
1084 define a subroutine C<&afterinit> to be executed after the debugger is
1085 initialized.
1086
1087 After the rc file is read, the debugger reads environment variable
1088 PERLDB_OPTS and parses it as a rest of C<O ...> line in debugger prompt.
1089
1090 It also maintains magical internal variables, such as C<@DB::dbline>,
1091 C<%DB::dbline>, which are aliases for C<@{"::_<current_file"}>
1092 C<%{"::_<current_file"}>.  Here C<current_file> is the currently
1093 selected (with the debugger's C<f> command, or by flow of execution)
1094 file.
1095
1096 Some functions are provided to simplify customization.  See L<"Debugger
1097 Customization"> for description of C<DB::parse_options(string)>.  The
1098 function C<DB::dump_trace(skip[, count])> skips the specified number
1099 of frames, and returns a list containing info about the caller
1100 frames (all if C<count> is missing).  Each entry is a hash with keys
1101 C<context> (C<$> or C<@>), C<sub> (subroutine name, or info about
1102 eval), C<args> (C<undef> or a reference to an array), C<file>, and
1103 C<line>.
1104
1105 The function C<DB::print_trace(FH, skip[, count[, short]])> prints
1106 formatted info about caller frames.  The last two functions may be
1107 convenient as arguments to C<E<lt>>, C<E<lt>E<lt>> commands.
1108
1109 =head2 Other resources
1110
1111 You did try the B<-w> switch, didn't you?
1112
1113 =head2 BUGS
1114
1115 You cannot get the stack frame information or otherwise debug functions
1116 that were not compiled by Perl, such as C or C++ extensions.
1117
1118 If you alter your @_ arguments in a subroutine (such as with B<shift>
1119 or B<pop>, the stack backtrace will not show the original values.
1120
1121 =head1 Debugging Perl memory usage
1122
1123 Perl is I<very> frivolous with memory.  There is a saying that to
1124 estimate memory usage of Perl, assume a reasonable algorithm of
1125 allocation, and multiply your estimates by 10.  This is not absolutely
1126 true, but may give you a good grasp of what happens.
1127
1128 Say, an integer cannot take less than 20 bytes of memory, a float
1129 cannot take less than 24 bytes, a string cannot take less than 32
1130 bytes (all these examples assume 32-bit architectures, the result are
1131 much worse on 64-bit architectures).  If a variable is accessed in two
1132 of three different ways (which require an integer, a float, or a
1133 string), the memory footprint may increase by another 20 bytes.  A
1134 sloppy malloc() implementation will make these numbers yet more.
1135
1136 On the opposite end of the scale, a declaration like
1137
1138   sub foo;
1139
1140 may take (on some versions of perl) up to 500 bytes of memory.
1141
1142 Off-the-cuff anecdotal estimates of a code bloat give a factor around
1143 8.  This means that the compiled form of reasonable (commented
1144 indented etc.)  code will take approximately 8 times more than the
1145 disk space the code takes.
1146
1147 There are two Perl-specific ways to analyze the memory usage:
1148 $ENV{PERL_DEBUG_MSTATS} and B<-DL> switch.  First one is available
1149 only if perl is compiled with Perl's malloc(), the second one only if
1150 Perl compiled with C<-DDEBUGGING> (as with giving C<-D optimise=-g>
1151 option to F<Configure>).
1152
1153 =head2 Using C<$ENV{PERL_DEBUG_MSTATS}>
1154
1155 If your perl is using Perl's malloc(), and compiled with correct
1156 switches (this is the default), then it will print memory usage
1157 statistics after compiling your code (if C<$ENV{PERL_DEBUG_MSTATS}> >
1158 1), and before termination of the script (if
1159 C<$ENV{PERL_DEBUG_MSTATS}> >= 1).  The report format is similar to one
1160 in the following example:
1161
1162   env PERL_DEBUG_MSTATS=2 perl -e "require Carp"
1163   Memory allocation statistics after compilation: (buckets 4(4)..8188(8192)
1164      14216 free:   130   117    28     7     9   0   2     2   1 0 0
1165                 437    61    36     0     5
1166      60924 used:   125   137   161    55     7   8   6    16   2 0 1
1167                  74   109   304    84    20
1168   Total sbrk(): 77824/21:119. Odd ends: pad+heads+chain+tail: 0+636+0+2048.
1169   Memory allocation statistics after execution:   (buckets 4(4)..8188(8192)
1170      30888 free:   245    78    85    13     6   2   1     3   2 0 1
1171                 315   162    39    42    11
1172     175816 used:   265   176  1112   111    26  22  11    27   2 1 1
1173                 196   178  1066   798    39
1174   Total sbrk(): 215040/47:145. Odd ends: pad+heads+chain+tail: 0+2192+0+6144.
1175
1176 It is possible to ask for such a statistic at arbitrary moment by
1177 using Devel::Peek::mstats() (module Devel::Peek is available on CPAN).
1178
1179 Here is the explanation of different parts of the format:
1180
1181 =over
1182
1183 =item C<buckets SMALLEST(APPROX)..GREATEST(APPROX)>
1184
1185 Perl's malloc() uses bucketed allocations.  Every request is rounded
1186 up to the closest bucket size available, and a bucket of these size is
1187 taken from the pool of the buckets of this size.
1188
1189 The above line describes limits of buckets currently in use.  Each
1190 bucket has two sizes: memory footprint, and the maximal size of user
1191 data which may be put into this bucket.  Say, in the above example the
1192 smallest bucket is both sizes 4.  The biggest bucket has usable size
1193 8188, and the memory footprint 8192.  
1194
1195 With debugging Perl some buckets may have negative usable size.  This
1196 means that these buckets cannot (and will not) be used.  For greater
1197 buckets the memory footprint may be one page greater than a power of
1198 2.  In such a case the corresponding power of two is printed instead
1199 in the C<APPROX> field above.
1200
1201 =item Free/Used
1202
1203 The following 1 or 2 rows of numbers correspond to the number of
1204 buckets of each size between C<SMALLEST> and C<GREATEST>.  In the
1205 first row the sizes (memory footprints) of buckets are powers of two
1206 (or possibly one page greater).  In the second row (if present) the
1207 memory footprints of the buckets are between memory footprints of two
1208 buckets "above".  
1209
1210 Say, with the above example the memory footprints are (with current
1211 algorithm)
1212
1213      free:    8     16    32    64    128  256 512 1024 2048 4096 8192
1214            4     12    24    48    80
1215
1216 With non-C<DEBUGGING> perl the buckets starting from C<128>-long ones
1217 have 4-byte overhead, thus 8192-long bucket may take up to
1218 8188-byte-long allocations.
1219
1220 =item C<Total sbrk(): SBRKed/SBRKs:CONTINUOUS>
1221
1222 The first two fields give the total amount of memory perl sbrk()ed,
1223 and number of sbrk()s used.  The third number is what perl thinks
1224 about continuity of returned chunks.  As far as this number is
1225 positive, malloc() will assume that it is probable that sbrk() will
1226 provide continuous memory.
1227
1228 The amounts sbrk()ed by external libraries is not counted.
1229
1230 =item C<pad: 0>
1231
1232 The amount of sbrk()ed memory needed to keep buckets aligned.
1233
1234 =item C<heads: 2192>
1235
1236 While memory overhead of bigger buckets is kept inside the bucket, for
1237 smaller buckets it is kept in separate areas.  This field gives the
1238 total size of these areas.
1239
1240 =item C<chain: 0>
1241
1242 malloc() may want to subdivide a bigger bucket into smaller buckets.
1243 If only a part of the deceased-bucket is left non-subdivided, the rest
1244 is kept as an element of a linked list.  This field gives the total
1245 size of these chunks.
1246
1247 =item C<tail: 6144>
1248
1249 To minimize amount of sbrk()s malloc() asks for more memory.  This
1250 field gives the size of the yet-unused part, which is sbrk()ed, but
1251 never touched.
1252
1253 =back
1254
1255 =head2 Example of using B<-DL> switch
1256
1257 Below we show how to analyse memory usage by 
1258
1259   do 'lib/auto/POSIX/autosplit.ix';
1260
1261 The file in question contains a header and 146 lines similar to
1262
1263   sub getcwd ;
1264
1265 B<Note:> I<the discussion below supposes 32-bit architecture.  In the
1266 newer versions of perl the memory usage of the constructs discussed
1267 here is much improved, but the story discussed below is a real-life
1268 story.  This story is very terse, and assumes more than cursory
1269 knowledge of Perl internals.>
1270
1271 Here is the itemized list of Perl allocations performed during parsing
1272 of this file:
1273
1274  !!! "after" at test.pl line 3.
1275     Id  subtot   4   8  12  16  20  24  28  32  36  40  48  56  64  72  80 80+
1276   0 02   13752   .   .   .   . 294   .   .   .   .   .   .   .   .   .   .   4
1277   0 54    5545   .   .   8 124  16   .   .   .   1   1   .   .   .   .   .   3
1278   5 05      32   .   .   .   .   .   .   .   1   .   .   .   .   .   .   .   .
1279   6 02    7152   .   .   .   .   .   .   .   .   .   . 149   .   .   .   .   .
1280   7 02    3600   .   .   .   .   . 150   .   .   .   .   .   .   .   .   .   .
1281   7 03      64   .  -1   .   1   .   .   2   .   .   .   .   .   .   .   .   .
1282   7 04    7056   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
1283   7 17   38404   .   .   .   .   .   .   .   1   .   . 442 149   .   . 147   .
1284   9 03    2078  17 249  32   .   .   .   .   2   .   .   .   .   .   .   .   .
1285
1286
1287 To see this list insert two C<warn('!...')> statements around the call:
1288
1289   warn('!');
1290   do 'lib/auto/POSIX/autosplit.ix';
1291   warn('!!! "after"');
1292
1293 and run it with B<-DL> option.  The first warn() will print memory
1294 allocation info before the parsing of the file, and will memorize the
1295 statistics at this point (we ignore what it prints). The second warn()
1296 will print increments w.r.t. this memorized statistics.  This is the
1297 above printout.
1298
1299 Different I<Id>s on the left correspond to different subsystems of
1300 perl interpreter, they are just first argument given to perl memory
1301 allocation API New().  To find what C<9 03> means C<grep> the perl
1302 source for C<903>.  You will see that it is F<util.c>, function
1303 savepvn().  This function is used to store a copy of existing chunk of
1304 memory.  Using C debugger, one can see that it is called either
1305 directly from gv_init(), or via sv_magic(), and gv_init() is called
1306 from gv_fetchpv() - which is called from newSUB().
1307
1308 B<Note:> to reach this place in debugger and skip all the calls to
1309 savepvn during the compilation of the main script, set a C breakpoint
1310 in Perl_warn(), C<continue> this point is reached, I<then> set
1311 breakpoint in Perl_savepvn().  Note that you may need to skip a
1312 handful of Perl_savepvn() which do not correspond to mass production
1313 of CVs (there are more C<903> allocations than 146 similar lines of
1314 F<lib/auto/POSIX/autosplit.ix>).  Note also that C<Perl_> prefixes are
1315 added by macroization code in perl header files to avoid conflicts
1316 with external libraries.
1317
1318 Anyway, we see that C<903> ids correspond to creation of globs, twice
1319 per glob - for glob name, and glob stringification magic.
1320
1321 Here are explanations for other I<Id>s above: 
1322
1323 =over
1324
1325 =item C<717> 
1326
1327 is for creation of bigger C<XPV*> structures.  In the above case it
1328 creates 3 C<AV> per subroutine, one for a list of lexical variable
1329 names, one for a scratchpad (which contains lexical variables and
1330 C<targets>), and one for the array of scratchpads needed for
1331 recursion.  
1332
1333 It also creates a C<GV> and a C<CV> per subroutine (all called from
1334 start_subparse()).
1335
1336 =item C<002>
1337
1338 Creates C array corresponding to the C<AV> of scratchpads, and the
1339 scratchpad itself (the first fake entry of this scratchpad is created
1340 though the subroutine itself is not defined yet).
1341
1342 It also creates C arrays to keep data for the stash (this is one HV,
1343 but it grows, thus there are 4 big allocations: the big chunks are not
1344 freed, but are kept as additional arenas for C<SV> allocations).
1345
1346 =item C<054>
1347
1348 creates a C<HEK> for the name of the glob for the subroutine (this
1349 name is a key in a I<stash>).
1350
1351 Big allocations with this I<Id> correspond to allocations of new
1352 arenas to keep C<HE>.
1353
1354 =item C<602>
1355
1356 creates a C<GP> for the glob for the subroutine.
1357
1358 =item C<702>
1359
1360 creates the C<MAGIC> for the glob for the subroutine.
1361
1362 =item C<704>
1363
1364 creates I<arenas> which keep SVs.
1365
1366 =back
1367
1368 =head2 B<-DL> details
1369
1370 If Perl is run with B<-DL> option, then warn()s which start with `!'
1371 behave specially.  They print a list of I<categories> of memory
1372 allocations, and statistics of allocations of different sizes for
1373 these categories.
1374
1375 If warn() string starts with
1376
1377 =over
1378
1379 =item C<!!!> 
1380
1381 print changed categories only, print the differences in counts of allocations;
1382
1383 =item C<!!> 
1384
1385 print grown categories only; print the absolute values of counts, and totals;
1386
1387 =item C<!>
1388
1389 print nonempty categories, print the absolute values of counts and totals.
1390
1391 =back
1392
1393 =head2 Limitations of B<-DL> statistic
1394
1395 If an extension or an external library does not use Perl API to
1396 allocate memory, these allocations are not counted.
1397
1398 =head1 Debugging regular expressions
1399
1400 There are two ways to enable debugging output for regular expressions.
1401
1402 If your perl is compiled with C<-DDEBUGGING>, you may use the
1403 B<-Dr> flag on the command line.
1404
1405 Otherwise, one can C<use re 'debug'>, which has effects both at
1406 compile time, and at run time (and is I<not> lexically scoped).
1407
1408 =head2 Compile-time output
1409
1410 The debugging output for the compile time looks like this:
1411
1412   compiling RE `[bc]d(ef*g)+h[ij]k$'
1413   size 43 first at 1
1414      1: ANYOF(11)
1415     11: EXACT <d>(13)
1416     13: CURLYX {1,32767}(27)
1417     15:   OPEN1(17)
1418     17:     EXACT <e>(19)
1419     19:     STAR(22)
1420     20:       EXACT <f>(0)
1421     22:     EXACT <g>(24)
1422     24:   CLOSE1(26)
1423     26:   WHILEM(0)
1424     27: NOTHING(28)
1425     28: EXACT <h>(30)
1426     30: ANYOF(40)
1427     40: EXACT <k>(42)
1428     42: EOL(43)
1429     43: END(0)
1430   anchored `de' at 1 floating `gh' at 3..2147483647 (checking floating)
1431                                     stclass `ANYOF' minlen 7
1432
1433 The first line shows the pre-compiled form of the regexp, and the
1434 second shows the size of the compiled form (in arbitrary units,
1435 usually 4-byte words) and the label I<id> of the first node which
1436 does a match.
1437
1438 The last line (split into two lines in the above) contains the optimizer
1439 info.  In the example shown, the optimizer found that the match 
1440 should contain a substring C<de> at the offset 1, and substring C<gh>
1441 at some offset between 3 and infinity.  Moreover, when checking for
1442 these substrings (to abandon impossible matches quickly) it will check
1443 for the substring C<gh> before checking for the substring C<de>.  The
1444 optimizer may also use the knowledge that the match starts (at the
1445 C<first> I<id>) with a character class, and the match cannot be
1446 shorter than 7 chars.
1447
1448 The fields of interest which may appear in the last line are
1449
1450 =over
1451
1452 =item C<anchored> I<STRING> C<at> I<POS>
1453
1454 =item C<floating> I<STRING> C<at> I<POS1..POS2>
1455
1456 see above;
1457
1458 =item C<matching floating/anchored>
1459
1460 which substring to check first;
1461
1462 =item C<minlen>
1463
1464 the minimal length of the match;
1465
1466 =item C<stclass> I<TYPE>
1467
1468 The type of the first matching node.
1469
1470 =item C<noscan>
1471
1472 which advises to not scan for the found substrings;
1473
1474 =item C<isall>
1475
1476 which says that the optimizer info is in fact all that the regular
1477 expression contains (thus one does not need to enter the RE engine at
1478 all);
1479
1480 =item C<GPOS>
1481
1482 if the pattern contains C<\G>;
1483
1484 =item C<plus> 
1485
1486 if the pattern starts with a repeated char (as in C<x+y>);
1487
1488 =item C<implicit>
1489
1490 if the pattern starts with C<.*>;
1491
1492 =item C<with eval> 
1493
1494 if the pattern contain eval-groups (see L<perlre/(?{ code })>);
1495
1496 =item C<anchored(TYPE)>
1497
1498 if the pattern may
1499 match only at a handful of places  (with C<TYPE> being
1500 C<BOL>, C<MBOL>, or C<GPOS>, see the table below).
1501
1502 =back
1503
1504 If a substring is known to match at end-of-line only, it may be
1505 followed by C<$>, as in C<floating `k'$>.
1506
1507 The optimizer-specific info is used to avoid entering (a slow) RE
1508 engine on strings which will definitely not match.  If C<isall> flag
1509 is set, a call to the RE engine may be avoided even when optimizer
1510 found an appropriate place for the match.
1511
1512 The rest of the output contains the list of I<nodes> of the compiled
1513 form of the RE.  Each line has format 
1514
1515 C<   >I<id>: I<TYPE> I<OPTIONAL-INFO> (I<next-id>)
1516
1517 =head2 Types of nodes
1518
1519 Here is the list of possible types with short descriptions:
1520
1521     # TYPE arg-description [num-args] [longjump-len] DESCRIPTION
1522
1523     # Exit points
1524     END         no      End of program.
1525     SUCCEED     no      Return from a subroutine, basically.
1526
1527     # Anchors:
1528     BOL         no      Match "" at beginning of line.
1529     MBOL        no      Same, assuming multiline.
1530     SBOL        no      Same, assuming singleline.
1531     EOS         no      Match "" at end of string.
1532     EOL         no      Match "" at end of line.
1533     MEOL        no      Same, assuming multiline.
1534     SEOL        no      Same, assuming singleline.
1535     BOUND       no      Match "" at any word boundary
1536     BOUNDL      no      Match "" at any word boundary
1537     NBOUND      no      Match "" at any word non-boundary
1538     NBOUNDL     no      Match "" at any word non-boundary
1539     GPOS        no      Matches where last m//g left off.
1540
1541     # [Special] alternatives
1542     ANY         no      Match any one character (except newline).
1543     SANY        no      Match any one character.
1544     ANYOF       sv      Match character in (or not in) this class.
1545     ALNUM       no      Match any alphanumeric character
1546     ALNUML      no      Match any alphanumeric char in locale
1547     NALNUM      no      Match any non-alphanumeric character
1548     NALNUML     no      Match any non-alphanumeric char in locale
1549     SPACE       no      Match any whitespace character
1550     SPACEL      no      Match any whitespace char in locale
1551     NSPACE      no      Match any non-whitespace character
1552     NSPACEL     no      Match any non-whitespace char in locale
1553     DIGIT       no      Match any numeric character
1554     NDIGIT      no      Match any non-numeric character
1555
1556     # BRANCH    The set of branches constituting a single choice are hooked
1557     #           together with their "next" pointers, since precedence prevents
1558     #           anything being concatenated to any individual branch.  The
1559     #           "next" pointer of the last BRANCH in a choice points to the
1560     #           thing following the whole choice.  This is also where the
1561     #           final "next" pointer of each individual branch points; each
1562     #           branch starts with the operand node of a BRANCH node.
1563     #
1564     BRANCH      node    Match this alternative, or the next...
1565
1566     # BACK      Normal "next" pointers all implicitly point forward; BACK
1567     #           exists to make loop structures possible.
1568     # not used
1569     BACK        no      Match "", "next" ptr points backward.
1570
1571     # Literals
1572     EXACT       sv      Match this string (preceded by length).
1573     EXACTF      sv      Match this string, folded (prec. by length).
1574     EXACTFL     sv      Match this string, folded in locale (w/len).
1575
1576     # Do nothing
1577     NOTHING     no      Match empty string.
1578     # A variant of above which delimits a group, thus stops optimizations
1579     TAIL        no      Match empty string. Can jump here from outside.
1580
1581     # STAR,PLUS '?', and complex '*' and '+', are implemented as circular
1582     #           BRANCH structures using BACK.  Simple cases (one character
1583     #           per match) are implemented with STAR and PLUS for speed
1584     #           and to minimize recursive plunges.
1585     #
1586     STAR        node    Match this (simple) thing 0 or more times.
1587     PLUS        node    Match this (simple) thing 1 or more times.
1588
1589     CURLY       sv 2    Match this simple thing {n,m} times.
1590     CURLYN      no 2    Match next-after-this simple thing 
1591     #                   {n,m} times, set parenths.
1592     CURLYM      no 2    Match this medium-complex thing {n,m} times.
1593     CURLYX      sv 2    Match this complex thing {n,m} times.
1594
1595     # This terminator creates a loop structure for CURLYX
1596     WHILEM      no      Do curly processing and see if rest matches.
1597
1598     # OPEN,CLOSE,GROUPP ...are numbered at compile time.
1599     OPEN        num 1   Mark this point in input as start of #n.
1600     CLOSE       num 1   Analogous to OPEN.
1601
1602     REF         num 1   Match some already matched string
1603     REFF        num 1   Match already matched string, folded
1604     REFFL       num 1   Match already matched string, folded in loc.
1605
1606     # grouping assertions
1607     IFMATCH     off 1 2 Succeeds if the following matches.
1608     UNLESSM     off 1 2 Fails if the following matches.
1609     SUSPEND     off 1 1 "Independent" sub-RE.
1610     IFTHEN      off 1 1 Switch, should be preceeded by switcher .
1611     GROUPP      num 1   Whether the group matched.
1612
1613     # Support for long RE
1614     LONGJMP     off 1 1 Jump far away.
1615     BRANCHJ     off 1 1 BRANCH with long offset.
1616
1617     # The heavy worker
1618     EVAL        evl 1   Execute some Perl code.
1619
1620     # Modifiers
1621     MINMOD      no      Next operator is not greedy.
1622     LOGICAL     no      Next opcode should set the flag only.
1623
1624     # This is not used yet
1625     RENUM       off 1 1 Group with independently numbered parens.
1626
1627     # This is not really a node, but an optimized away piece of a "long" node.
1628     # To simplify debugging output, we mark it as if it were a node
1629     OPTIMIZED   off     Placeholder for dump.
1630
1631 =head2 Run-time output
1632
1633 First of all, when doing a match, one may get no run-time output even
1634 if debugging is enabled.  this means that the RE engine was never
1635 entered, all of the job was done by the optimizer.
1636
1637 If RE engine was entered, the output may look like this:
1638
1639   Matching `[bc]d(ef*g)+h[ij]k$' against `abcdefg__gh__'
1640     Setting an EVAL scope, savestack=3
1641      2 <ab> <cdefg__gh_>    |  1: ANYOF
1642      3 <abc> <defg__gh_>    | 11: EXACT <d>
1643      4 <abcd> <efg__gh_>    | 13: CURLYX {1,32767}
1644      4 <abcd> <efg__gh_>    | 26:   WHILEM
1645                                 0 out of 1..32767  cc=effff31c
1646      4 <abcd> <efg__gh_>    | 15:     OPEN1
1647      4 <abcd> <efg__gh_>    | 17:     EXACT <e>
1648      5 <abcde> <fg__gh_>    | 19:     STAR
1649                              EXACT <f> can match 1 times out of 32767...
1650     Setting an EVAL scope, savestack=3
1651      6 <bcdef> <g__gh__>    | 22:       EXACT <g>
1652      7 <bcdefg> <__gh__>    | 24:       CLOSE1
1653      7 <bcdefg> <__gh__>    | 26:       WHILEM
1654                                     1 out of 1..32767  cc=effff31c
1655     Setting an EVAL scope, savestack=12
1656      7 <bcdefg> <__gh__>    | 15:         OPEN1
1657      7 <bcdefg> <__gh__>    | 17:         EXACT <e>
1658        restoring \1 to 4(4)..7
1659                                     failed, try continuation...
1660      7 <bcdefg> <__gh__>    | 27:         NOTHING
1661      7 <bcdefg> <__gh__>    | 28:         EXACT <h>
1662                                     failed...
1663                                 failed...
1664
1665 The most significant information in the output is about the particular I<node>
1666 of the compiled RE which is currently being tested against the target string.
1667 The format of these lines is
1668
1669 C<    >I<STRING-OFFSET> <I<PRE-STRING>> <I<POST-STRING>>   |I<ID>:  I<TYPE>
1670
1671 The I<TYPE> info is indented with respect to the backtracking level.
1672 Other incidental information appears interspersed within.
1673
1674 =cut