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