Fix unnecessary re-linking
[p5sagit/p5-mst-13.2.git] / pod / perldebug.pod
CommitLineData
a0d0e21e 1=head1 NAME
2
3perldebug - Perl debugging
4
5=head1 DESCRIPTION
6
7First of all, have you tried using the B<-w> switch?
8
4e1d3b43 9=head1 The Perl Debugger
10
11If you invoke Perl with the B<-d> switch, your script runs under the
12Perl source debugger. This works like an interactive Perl
13environment, prompting for debugger commands that let you examine
68dc0745 14source code, set breakpoints, get stack backtraces, change the values of
4e1d3b43 15variables, etc. This is so convenient that you often fire up
54310121 16the debugger all by itself just to test out Perl constructs
4e1d3b43 17interactively to see what they do. For example:
18
19 perl -d -e 42
20
21In Perl, the debugger is not a separate program as it usually is in the
22typical compiled environment. Instead, the B<-d> flag tells the compiler
23to insert source information into the parse trees it's about to hand off
24to the interpreter. That means your code must first compile correctly
25for the debugger to work on it. Then when the interpreter starts up, it
54310121 26preloads a Perl library file containing the debugger itself.
4e1d3b43 27
28The program will halt I<right before> the first run-time executable
29statement (but see below regarding compile-time statements) and ask you
30to enter a debugger command. Contrary to popular expectations, whenever
31the debugger halts and shows you a line of code, it always displays the
32line it's I<about> to execute, rather than the one it has just executed.
33
34Any command not recognized by the debugger is directly executed
35(C<eval>'d) as Perl code in the current package. (The debugger uses the
36DB package for its own state information.)
37
38Leading white space before a command would cause the debugger to think
39it's I<NOT> a debugger command but for Perl, so be careful not to do
40that.
41
42=head2 Debugger Commands
43
44The debugger understands the following commands:
a0d0e21e 45
46=over 12
47
4e1d3b43 48=item h [command]
49
54310121 50Prints out a help message.
4e1d3b43 51
52If you supply another debugger command as an argument to the C<h> command,
53it prints out the description for just that command. The special
54argument of C<h h> produces a more compact help listing, designed to fit
55together on one screen.
56
57If the output the C<h> command (or any command, for that matter) scrolls
58past your screen, either precede the command with a leading pipe symbol so
59it's run through your pager, as in
60
61 DB> |h
62
e7ea3e70 63You may change the pager which is used via C<O pager=...> command.
64
4e1d3b43 65=item p expr
66
36477c24 67Same as C<print {$DB::OUT} expr> in the current package. In particular,
5f05dabc 68because this is just Perl's own B<print> function, this means that nested
4e1d3b43 69data structures and objects are not dumped, unlike with the C<x> command.
70
e7ea3e70 71The C<DB::OUT> filehandle is opened to F</dev/tty>, regardless of
72where STDOUT may be redirected to.
73
4e1d3b43 74=item x expr
75
54310121 76Evaluates its expression in list context and dumps out the result
4e1d3b43 77in a pretty-printed fashion. Nested data structures are printed out
78recursively, unlike the C<print> function.
79
36477c24 80The details of printout are governed by multiple C<O>ptions.
81
4e1d3b43 82=item V [pkg [vars]]
83
84Display all (or some) variables in package (defaulting to the C<main>
85package) using a data pretty-printer (hashes show their keys and values so
86you see what's what, control characters are made printable, etc.). Make
87sure you don't put the type specifier (like C<$>) there, just the symbol
88names, like this:
89
90 V DB filename line
91
92Use C<~pattern> and C<!pattern> for positive and negative regexps.
a0d0e21e 93
4e1d3b43 94Nested data structures are printed out in a legible fashion, unlike
95the C<print> function.
96
36477c24 97The details of printout are governed by multiple C<O>ptions.
98
4e1d3b43 99=item X [vars]
100
101Same as C<V currentpackage [vars]>.
a0d0e21e 102
103=item T
104
68dc0745 105Produce a stack backtrace. See below for details on its output.
a0d0e21e 106
4e1d3b43 107=item s [expr]
a0d0e21e 108
109Single step. Executes until it reaches the beginning of another
4e1d3b43 110statement, descending into subroutine calls. If an expression is
111supplied that includes function calls, it too will be single-stepped.
a0d0e21e 112
e7ea3e70 113=item n [expr]
a0d0e21e 114
115Next. Executes over subroutine calls, until it reaches the beginning
774d564b 116of the next statement. If an expression is supplied that includes
117function calls, those functions will be executed with stops before
118each statement.
a0d0e21e 119
184e9718 120=item E<lt>CRE<gt>
a0d0e21e 121
4e1d3b43 122Repeat last C<n> or C<s> command.
a0d0e21e 123
36477c24 124=item c [line|sub]
a0d0e21e 125
4e1d3b43 126Continue, optionally inserting a one-time-only breakpoint
36477c24 127at the specified line or subroutine.
a0d0e21e 128
4e1d3b43 129=item l
a0d0e21e 130
4e1d3b43 131List next window of lines.
a0d0e21e 132
133=item l min+incr
134
4e1d3b43 135List C<incr+1> lines starting at C<min>.
a0d0e21e 136
137=item l min-max
138
774d564b 139List lines C<min> through C<max>. C<l -> is synonymous to C<->.
a0d0e21e 140
141=item l line
142
4e1d3b43 143List a single line.
a0d0e21e 144
4e1d3b43 145=item l subname
a0d0e21e 146
4e1d3b43 147List first window of lines from subroutine.
a0d0e21e 148
149=item -
150
4e1d3b43 151List previous window of lines.
a0d0e21e 152
4e1d3b43 153=item w [line]
a0d0e21e 154
4e1d3b43 155List window (a few lines) around the current line.
a0d0e21e 156
4e1d3b43 157=item .
a0d0e21e 158
4e1d3b43 159Return debugger pointer to the last-executed line and
160print it out.
161
162=item f filename
163
774d564b 164Switch to viewing a different file or eval statement. If C<filename>
e7ea3e70 165is not a full filename as found in values of %INC, it is considered as
166a regexp.
a0d0e21e 167
168=item /pattern/
169
4e1d3b43 170Search forwards for pattern; final / is optional.
a0d0e21e 171
172=item ?pattern?
173
4e1d3b43 174Search backwards for pattern; final ? is optional.
a0d0e21e 175
176=item L
177
36477c24 178List all breakpoints and actions.
a0d0e21e 179
4e1d3b43 180=item S [[!]pattern]
a0d0e21e 181
4e1d3b43 182List subroutine names [not] matching pattern.
a0d0e21e 183
184=item t
185
36477c24 186Toggle trace mode (see also C<AutoTrace> C<O>ption).
4e1d3b43 187
188=item t expr
189
190Trace through execution of expr. For example:
191
192 $ perl -de 42
193 Stack dump during die enabled outside of evals.
a0d0e21e 194
4e1d3b43 195 Loading DB routines from perl5db.pl patch level 0.94
196 Emacs support available.
197
198 Enter h or `h h' for help.
199
200 main::(-e:1): 0
201 DB<1> sub foo { 14 }
202
203 DB<2> sub bar { 3 }
204
205 DB<3> t print foo() * bar()
206 main::((eval 172):3): print foo() + bar();
207 main::foo((eval 168):2):
208 main::bar((eval 170):2):
209 42
36477c24 210
211or, with the C<O>ption C<frame=2> set,
212
213 DB<4> O f=2
214 frame = '2'
215 DB<5> t print foo() * bar()
216 3: foo() * bar()
217 entering main::foo
218 2: sub foo { 14 };
219 exited main::foo
220 entering main::bar
221 2: sub bar { 3 };
222 exited main::bar
223 42
4e1d3b43 224
225=item b [line] [condition]
a0d0e21e 226
227Set a breakpoint. If line is omitted, sets a breakpoint on the line
4e1d3b43 228that is about to be executed. If a condition is specified, it's
a0d0e21e 229evaluated each time the statement is reached and a breakpoint is taken
5f05dabc 230only if the condition is true. Breakpoints may be set on only lines
4e1d3b43 231that begin an executable statement. Conditions don't use B<if>:
a0d0e21e 232
233 b 237 $x > 30
36477c24 234 b 237 ++$count237 < 11
a0d0e21e 235 b 33 /pattern/i
236
4e1d3b43 237=item b subname [condition]
a0d0e21e 238
4e1d3b43 239Set a breakpoint at the first line of the named subroutine.
a0d0e21e 240
36477c24 241=item b postpone subname [condition]
242
243Set breakpoint at first line of subroutine after it is compiled.
244
245=item b load filename
246
774d564b 247Set breakpoint at the first executed line of the file. Filename should
e7ea3e70 248be a full name as found in values of %INC.
249
250=item b compile subname
251
252Sets breakpoint at the first statement executed after the subroutine
253is compiled.
36477c24 254
4e1d3b43 255=item d [line]
a0d0e21e 256
4e1d3b43 257Delete a breakpoint at the specified line. If line is omitted, deletes
258the breakpoint on the line that is about to be executed.
a0d0e21e 259
260=item D
261
4e1d3b43 262Delete all installed breakpoints.
263
264=item a [line] command
265
266Set an action to be done before the line is executed.
267The sequence of steps taken by the debugger is
268
8ebc5c01 269 1. check for a breakpoint at this line
270 2. print the line if necessary (tracing)
271 3. do any actions associated with that line
272 4. prompt user if at a breakpoint or in single-step
273 5. evaluate line
a0d0e21e 274
4e1d3b43 275For example, this will print out C<$foo> every time line
27653 is passed:
a0d0e21e 277
4e1d3b43 278 a 53 print "DB FOUND $foo\n"
a0d0e21e 279
280=item A
281
4e1d3b43 282Delete all installed actions.
283
284=item O [opt[=val]] [opt"val"] [opt?]...
285
286Set or query values of options. val defaults to 1. opt can
287be abbreviated. Several options can be listed.
288
289=over 12
290
e7ea3e70 291=item C<recallCommand>, C<ShellBang>
4e1d3b43 292
293The characters used to recall command or spawn shell. By
294default, these are both set to C<!>.
295
e7ea3e70 296=item C<pager>
4e1d3b43 297
298Program to use for output of pager-piped commands (those
299beginning with a C<|> character.) By default,
300C<$ENV{PAGER}> will be used.
301
e7ea3e70 302=item C<tkRunning>
36477c24 303
304Run Tk while prompting (with ReadLine).
305
e7ea3e70 306=item C<signalLevel>, C<warnLevel>, C<dieLevel>
307
774d564b 308Level of verbosity. By default the debugger is in a sane verbose mode,
e7ea3e70 309thus it will print backtraces on all the warnings and die-messages
310which are going to be printed out, and will print a message when
54310121 311interesting uncaught signals arrive.
36477c24 312
774d564b 313To disable this behaviour, set these values to 0. If C<dieLevel> is 2,
e7ea3e70 314then the messages which will be caught by surrounding C<eval> are also
315printed.
36477c24 316
e7ea3e70 317=item C<AutoTrace>
36477c24 318
e7ea3e70 319Trace mode (similar to C<t> command, but can be put into
320C<PERLDB_OPTS>).
36477c24 321
e7ea3e70 322=item C<LineInfo>
36477c24 323
e7ea3e70 324File or pipe to print line number info to. If it is a pipe (say,
325C<|visual_perl_db>), then a short, "emacs like" message is used.
36477c24 326
327=item C<inhibit_exit>
328
329If 0, allows I<stepping off> the end of the script.
330
54310121 331=item C<PrintRet>
36477c24 332
333affects printing of return value after C<r> command.
334
54310121 335=item C<frame>
36477c24 336
337affects printing messages on entry and exit from subroutines. If
338C<frame & 2> is false, messages are printed on entry only. (Printing
5f05dabc 339on exit may be useful if inter(di)spersed with other messages.)
36477c24 340
341If C<frame & 4>, arguments to functions are printed as well as the
774d564b 342context and caller info. If C<frame & 8>, overloaded C<stringify> and
343C<tie>d C<FETCH> are enabled on the printed arguments. The length at
e7ea3e70 344which the argument list is truncated is governed by the next option:
345
346=item C<maxTraceLen>
347
348length at which the argument list is truncated when C<frame> option's
349bit 4 is set.
36477c24 350
4e1d3b43 351=back
352
353The following options affect what happens with C<V>, C<X>, and C<x>
354commands:
355
356=over 12
357
e7ea3e70 358=item C<arrayDepth>, C<hashDepth>
4e1d3b43 359
360Print only first N elements ('' for all).
361
e7ea3e70 362=item C<compactDump>, C<veryCompact>
4e1d3b43 363
774d564b 364Change style of array and hash dump. If C<compactDump>, short array
e7ea3e70 365may be printed on one line.
4e1d3b43 366
e7ea3e70 367=item C<globPrint>
4e1d3b43 368
369Whether to print contents of globs.
370
e7ea3e70 371=item C<DumpDBFiles>
4e1d3b43 372
373Dump arrays holding debugged files.
374
e7ea3e70 375=item C<DumpPackages>
4e1d3b43 376
377Dump symbol tables of packages.
378
e7ea3e70 379=item C<quote>, C<HighBit>, C<undefPrint>
380
774d564b 381Change style of string dump. Default value of C<quote> is C<auto>, one
e7ea3e70 382can enable either double-quotish dump, or single-quotish by setting it
774d564b 383to C<"> or C<'>. By default, characters with high bit set are printed
e7ea3e70 384I<as is>.
385
54310121 386=item C<UsageOnly>
4e1d3b43 387
774d564b 388I<very> rudimentally per-package memory usage dump. Calculates total
e7ea3e70 389size of strings in variables in the package.
4e1d3b43 390
36477c24 391=back
4e1d3b43 392
36477c24 393During startup options are initialized from C<$ENV{PERLDB_OPTS}>.
394You can put additional initialization options C<TTY>, C<noTTY>,
395C<ReadLine>, and C<NonStop> there.
396
397Example rc file:
4e1d3b43 398
e7ea3e70 399 &parse_options("NonStop=1 LineInfo=db.out AutoTrace");
4e1d3b43 400
36477c24 401The script will run without human intervention, putting trace information
402into the file I<db.out>. (If you interrupt it, you would better reset
403C<LineInfo> to something "interactive"!)
4e1d3b43 404
36477c24 405=over 12
4e1d3b43 406
36477c24 407=item C<TTY>
4e1d3b43 408
36477c24 409The TTY to use for debugging I/O.
410
36477c24 411=item C<noTTY>
412
774d564b 413If set, goes in C<NonStop> mode, and would not connect to a TTY. If
36477c24 414interrupt (or if control goes to debugger via explicit setting of
415$DB::signal or $DB::single from the Perl script), connects to a TTY
416specified by the C<TTY> option at startup, or to a TTY found at
417runtime using C<Term::Rendezvous> module of your choice.
418
419This module should implement a method C<new> which returns an object
420with two methods: C<IN> and C<OUT>, returning two filehandles to use
774d564b 421for debugging input and output correspondingly. Method C<new> may
36477c24 422inspect an argument which is a value of C<$ENV{PERLDB_NOTTY}> at
423startup, or is C<"/tmp/perldbtty$$"> otherwise.
424
425=item C<ReadLine>
426
427If false, readline support in debugger is disabled, so you can debug
428ReadLine applications.
429
430=item C<NonStop>
431
54310121 432If set, debugger goes into noninteractive mode until interrupted, or
36477c24 433programmatically by setting $DB::signal or $DB::single.
434
435=back
436
437Here's an example of using the C<$ENV{PERLDB_OPTS}> variable:
4e1d3b43 438
e7ea3e70 439 $ PERLDB_OPTS="N f=2" perl -d myprogram
4e1d3b43 440
441will run the script C<myprogram> without human intervention, printing
442out the call tree with entry and exit points. Note that C<N f=2> is
774d564b 443equivalent to C<NonStop=1 frame=2>. Note also that at the moment when
4e1d3b43 444this documentation was written all the options to the debugger could
36477c24 445be uniquely abbreviated by the first letter (with exception of
446C<Dump*> options).
4e1d3b43 447
36477c24 448Other examples may include
a0d0e21e 449
e7ea3e70 450 $ PERLDB_OPTS="N f A L=listing" perl -d myprogram
a0d0e21e 451
54310121 452- runs script noninteractively, printing info on each entry into a
36477c24 453subroutine and each executed line into the file F<listing>. (If you
454interrupt it, you would better reset C<LineInfo> to something
455"interactive"!)
456
457
e7ea3e70 458 $ env "PERLDB_OPTS=R=0 TTY=/dev/ttyc" perl -d myprogram
36477c24 459
460may be useful for debugging a program which uses C<Term::ReadLine>
774d564b 461itself. Do not forget detach shell from the TTY in the window which
36477c24 462corresponds to F</dev/ttyc>, say, by issuing a command like
463
e7ea3e70 464 $ sleep 1000000
36477c24 465
466See L<"Debugger Internals"> below for more details.
467
468=item E<lt> [ command ]
469
470Set an action (Perl command) to happen before every debugger prompt.
4a6725af 471A multi-line command may be entered by backslashing the newlines. If
36477c24 472C<command> is missing, resets the list of actions.
473
474=item E<lt>E<lt> command
475
476Add an action (Perl command) to happen before every debugger prompt.
4a6725af 477A multi-line command may be entered by backslashing the newlines.
a0d0e21e 478
184e9718 479=item E<gt> command
a0d0e21e 480
36477c24 481Set an action (Perl command) to happen after the prompt when you've
4a6725af 482just given a command to return to executing the script. A multi-line
36477c24 483command may be entered by backslashing the newlines. If C<command> is
484missing, resets the list of actions.
485
486=item E<gt>E<gt> command
487
488Adds an action (Perl command) to happen after the prompt when you've
4a6725af 489just given a command to return to executing the script. A multi-line
36477c24 490command may be entered by backslashing the newlines.
491
492=item { [ command ]
493
494Set an action (debugger command) to happen before every debugger prompt.
4a6725af 495A multi-line command may be entered by backslashing the newlines. If
36477c24 496C<command> is missing, resets the list of actions.
497
498=item {{ command
499
500Add an action (debugger command) to happen before every debugger prompt.
4a6725af 501A multi-line command may be entered by backslashing the newlines.
a0d0e21e 502
4e1d3b43 503=item ! number
a0d0e21e 504
4e1d3b43 505Redo a previous command (default previous command).
a0d0e21e 506
4e1d3b43 507=item ! -number
a0d0e21e 508
4e1d3b43 509Redo number'th-to-last command.
a0d0e21e 510
4e1d3b43 511=item ! pattern
a0d0e21e 512
4e1d3b43 513Redo last command that started with pattern.
514See C<O recallCommand>, too.
a0d0e21e 515
4e1d3b43 516=item !! cmd
a0d0e21e 517
4e1d3b43 518Run cmd in a subprocess (reads from DB::IN, writes to DB::OUT)
519See C<O shellBang> too.
a0d0e21e 520
521=item H -number
522
523Display last n commands. Only commands longer than one character are
524listed. If number is omitted, lists them all.
525
526=item q or ^D
527
36477c24 528Quit. ("quit" doesn't work for this.) This is the only supported way
529to exit the debugger, though typing C<exit> twice may do it too.
530
531Set an C<O>ption C<inhibit_exit> to 0 if you want to be able to I<step
774d564b 532off> the end the script. You may also need to set C<$finished> to 0 at
36477c24 533some moment if you want to step through global destruction.
a0d0e21e 534
4e1d3b43 535=item R
536
537Restart the debugger by B<exec>ing a new session. It tries to maintain
538your history across this, but internal settings and command line options
539may be lost.
540
5f05dabc 541Currently the following setting are preserved: history, breakpoints,
54310121 542actions, debugger C<O>ptions, and the following command line
5f05dabc 543options: B<-w>, B<-I>, and B<-e>.
36477c24 544
4e1d3b43 545=item |dbcmd
546
547Run debugger command, piping DB::OUT to current pager.
548
549=item ||dbcmd
550
551Same as C<|dbcmd> but DB::OUT is temporarily B<select>ed as well.
552Often used with commands that would otherwise produce long
553output, such as
554
555 |V main
556
557=item = [alias value]
558
e7ea3e70 559Define a command alias, like
560
561 = quit q
562
563or list current aliases.
4e1d3b43 564
a0d0e21e 565=item command
566
567Execute command as a Perl statement. A missing semicolon will be
568supplied.
569
e7ea3e70 570=item m expr
a0d0e21e 571
e7ea3e70 572The expression is evaluated, and the methods which may be applied to
573the result are listed.
574
575=item m package
576
577The methods which may be applied to objects in the C<package> are listed.
a0d0e21e 578
579=back
580
e7ea3e70 581=head2 Debugger input/output
582
583=over 8
584
585=item Prompt
586
4e1d3b43 587The debugger prompt is something like
588
589 DB<8>
590
591or even
592
593 DB<<17>>
594
595where that number is the command number, which you'd use to access with
54310121 596the builtin B<csh>-like history mechanism, e.g., C<!17> would repeat
4e1d3b43 597command number 17. The number of angle brackets indicates the depth of
598the debugger. You could get more than one set of brackets, for example, if
599you'd already at a breakpoint and then printed out the result of a
36477c24 600function call that itself also has a breakpoint, or you step into an
601expression via C<s/n/t expression> command.
4e1d3b43 602
54310121 603=item Multiline commands
e7ea3e70 604
4a6725af 605If you want to enter a multi-line command, such as a subroutine
e7ea3e70 606definition with several statements, or a format, you may escape the
607newline that would normally end the debugger command with a backslash.
608Here's an example:
a0d0e21e 609
4e1d3b43 610 DB<1> for (1..4) { \
611 cont: print "ok\n"; \
612 cont: }
613 ok
614 ok
615 ok
616 ok
617
618Note that this business of escaping a newline is specific to interactive
619commands typed into the debugger.
620
e7ea3e70 621=item Stack backtrace
622
68dc0745 623Here's an example of what a stack backtrace via C<T> command might
e7ea3e70 624look like:
4e1d3b43 625
626 $ = main::infested called from file `Ambulation.pm' line 10
627 @ = Ambulation::legs(1, 2, 3, 4) called from file `camel_flea' line 7
628 $ = main::pests('bactrian', 4) called from file `camel_flea' line 4
629
630The left-hand character up there tells whether the function was called
631in a scalar or list context (we bet you can tell which is which). What
632that says is that you were in the function C<main::infested> when you ran
633the stack dump, and that it was called in a scalar context from line 10
634of the file I<Ambulation.pm>, but without any arguments at all, meaning
635it was called as C<&infested>. The next stack frame shows that the
636function C<Ambulation::legs> was called in a list context from the
637I<camel_flea> file with four arguments. The last stack frame shows that
638C<main::pests> was called in a scalar context, also from I<camel_flea>,
639but from line 4.
640
e7ea3e70 641Note that if you execute C<T> command from inside an active C<use>
642statement, the backtrace will contain both C<L<perlfunc/require>>
643frame and an C<L<perlfunc/eval EXPR>>) frame.
644
645=item Listing
646
647Listing given via different flavors of C<l> command looks like this:
648
649 DB<<13>> l
650 101: @i{@i} = ();
651 102:b @isa{@i,$pack} = ()
652 103 if(exists $i{$prevpack} || exists $isa{$pack});
653 104 }
654 105
655 106 next
656 107==> if(exists $isa{$pack});
657 108
658 109:a if ($extra-- > 0) {
659 110: %isa = ($pack,1);
660
661Note that the breakable lines are marked with C<:>, lines with
662breakpoints are marked by C<b>, with actions by C<a>, and the
663next executed line is marked by C<==E<gt>>.
664
665=item Frame listing
666
667When C<frame> option is set, debugger would print entered (and
668optionally exited) subroutines in different styles.
669
54310121 670What follows is the start of the listing of
e7ea3e70 671
672 env "PERLDB_OPTS=f=1 N" perl -d -V
673
674=over 4
675
676=item 1
677
678 entering main::BEGIN
679 entering Config::BEGIN
680 Package lib/Exporter.pm.
681 Package lib/Carp.pm.
682 Package lib/Config.pm.
683 entering Config::TIEHASH
684 entering Exporter::import
685 entering Exporter::export
686 entering Config::myconfig
687 entering Config::FETCH
688 entering Config::FETCH
689 entering Config::FETCH
690 entering Config::FETCH
691
692=item 2
693
694 entering main::BEGIN
695 entering Config::BEGIN
696 Package lib/Exporter.pm.
697 Package lib/Carp.pm.
698 exited Config::BEGIN
699 Package lib/Config.pm.
700 entering Config::TIEHASH
701 exited Config::TIEHASH
702 entering Exporter::import
703 entering Exporter::export
704 exited Exporter::export
705 exited Exporter::import
706 exited main::BEGIN
707 entering Config::myconfig
708 entering Config::FETCH
709 exited Config::FETCH
710 entering Config::FETCH
711 exited Config::FETCH
712 entering Config::FETCH
713
714=item 4
715
716 in $=main::BEGIN() from /dev/nul:0
717 in $=Config::BEGIN() from lib/Config.pm:2
718 Package lib/Exporter.pm.
719 Package lib/Carp.pm.
720 Package lib/Config.pm.
721 in $=Config::TIEHASH('Config') from lib/Config.pm:644
722 in $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
723 in $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from li
724 in @=Config::myconfig() from /dev/nul:0
725 in $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
726 in $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
727 in $=Config::FETCH(ref(Config), 'PATCHLEVEL') from lib/Config.pm:574
728 in $=Config::FETCH(ref(Config), 'SUBVERSION') from lib/Config.pm:574
729 in $=Config::FETCH(ref(Config), 'osname') from lib/Config.pm:574
730 in $=Config::FETCH(ref(Config), 'osvers') from lib/Config.pm:574
731
732=item 6
733
734 in $=main::BEGIN() from /dev/nul:0
735 in $=Config::BEGIN() from lib/Config.pm:2
736 Package lib/Exporter.pm.
737 Package lib/Carp.pm.
738 out $=Config::BEGIN() from lib/Config.pm:0
739 Package lib/Config.pm.
740 in $=Config::TIEHASH('Config') from lib/Config.pm:644
741 out $=Config::TIEHASH('Config') from lib/Config.pm:644
742 in $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
743 in $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/
744 out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/
745 out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
746 out $=main::BEGIN() from /dev/nul:0
747 in @=Config::myconfig() from /dev/nul:0
748 in $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
749 out $=Config::FETCH(ref(Config), 'package') from lib/Config.pm:574
750 in $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
751 out $=Config::FETCH(ref(Config), 'baserev') from lib/Config.pm:574
752 in $=Config::FETCH(ref(Config), 'PATCHLEVEL') from lib/Config.pm:574
753 out $=Config::FETCH(ref(Config), 'PATCHLEVEL') from lib/Config.pm:574
754 in $=Config::FETCH(ref(Config), 'SUBVERSION') from lib/Config.pm:574
755
756=item 14
757
758 in $=main::BEGIN() from /dev/nul:0
759 in $=Config::BEGIN() from lib/Config.pm:2
760 Package lib/Exporter.pm.
761 Package lib/Carp.pm.
762 out $=Config::BEGIN() from lib/Config.pm:0
763 Package lib/Config.pm.
764 in $=Config::TIEHASH('Config') from lib/Config.pm:644
765 out $=Config::TIEHASH('Config') from lib/Config.pm:644
766 in $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
767 in $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E
768 out $=Exporter::export('Config', 'main', 'myconfig', 'config_vars') from lib/E
769 out $=Exporter::import('Config', 'myconfig', 'config_vars') from /dev/nul:0
770 out $=main::BEGIN() from /dev/nul:0
771 in @=Config::myconfig() from /dev/nul:0
772 in $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574
773 out $=Config::FETCH('Config=HASH(0x1aa444)', 'package') from lib/Config.pm:574
774 in $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574
775 out $=Config::FETCH('Config=HASH(0x1aa444)', 'baserev') from lib/Config.pm:574
776
777=back
778
779In all the cases indentation of lines shows the call tree, if bit 2 of
780C<frame> is set, then a line is printed on exit from a subroutine as
781well, if bit 4 is set, then the arguments are printed as well as the
782caller info, if bit 8 is set, the arguments are printed even if they
783are tied or references.
784
785When a package is compiled, a line like this
786
787 Package lib/Carp.pm.
788
789is printed with proper indentation.
790
791=back
792
793=head2 Debugging compile-time statements
794
4e1d3b43 795If you have any compile-time executable statements (code within a BEGIN
796block or a C<use> statement), these will C<NOT> be stopped by debugger,
36477c24 797although C<require>s will (and compile-time statements can be traced
54310121 798with C<AutoTrace> option set in C<PERLDB_OPTS>). From your own Perl
36477c24 799code, however, you can
4e1d3b43 800transfer control back to the debugger using the following statement,
801which is harmless if the debugger is not running:
a0d0e21e 802
803 $DB::single = 1;
804
4e1d3b43 805If you set C<$DB::single> to the value 2, it's equivalent to having
806just typed the C<n> command, whereas a value of 1 means the C<s>
807command. The C<$DB::trace> variable should be set to 1 to simulate
808having typed the C<t> command.
809
e7ea3e70 810Another way to debug compile-time code is to start debugger, set a
811breakpoint on I<load> of some module thusly
812
813 DB<7> b load f:/perllib/lib/Carp.pm
814 Will stop on load of `f:/perllib/lib/Carp.pm'.
815
774d564b 816and restart debugger by C<R> command (if possible). One can use C<b
e7ea3e70 817compile subname> for the same purpose.
818
4e1d3b43 819=head2 Debugger Customization
a0d0e21e 820
36477c24 821Most probably you not want to modify the debugger, it contains enough
774d564b 822hooks to satisfy most needs. You may change the behaviour of debugger
36477c24 823from the debugger itself, using C<O>ptions, from the command line via
824C<PERLDB_OPTS> environment variable, and from I<customization files>.
a0d0e21e 825
826You can do some customization by setting up a F<.perldb> file which
827contains initialization code. For instance, you could make aliases
4e1d3b43 828like these (the last one is one people expect to be there):
a0d0e21e 829
4e1d3b43 830 $DB::alias{'len'} = 's/^len(.*)/p length($1)/';
a0d0e21e 831 $DB::alias{'stop'} = 's/^stop (at|in)/b/';
4e1d3b43 832 $DB::alias{'ps'} = 's/^ps\b/p scalar /';
833 $DB::alias{'quit'} = 's/^quit(\s*)/exit\$/';
834
36477c24 835One changes options from F<.perldb> file via calls like this one;
836
837 parse_options("NonStop=1 LineInfo=db.out AutoTrace=1 frame=2");
838
774d564b 839(the code is executed in the package C<DB>). Note that F<.perldb> is
840processed before processing C<PERLDB_OPTS>. If F<.perldb> defines the
36477c24 841subroutine C<afterinit>, it is called after all the debugger
774d564b 842initialization ends. F<.perldb> may be contained in the current
36477c24 843directory, or in the C<LOGDIR>/C<HOME> directory.
844
845If you want to modify the debugger, copy F<perl5db.pl> from the Perl
846library to another name and modify it as necessary. You'll also want
847to set your C<PERL5DB> environment variable to say something like this:
848
849 BEGIN { require "myperl5db.pl" }
850
851As the last resort, one can use C<PERL5DB> to customize debugger by
852directly setting internal variables or calling debugger functions.
853
4e1d3b43 854=head2 Readline Support
855
856As shipped, the only command line history supplied is a simplistic one
857that checks for leading exclamation points. However, if you install
858the Term::ReadKey and Term::ReadLine modules from CPAN, you will
859have full editing capabilities much like GNU I<readline>(3) provides.
860Look for these in the F<modules/by-module/Term> directory on CPAN.
861
54310121 862A rudimentary command line completion is also available.
e7ea3e70 863Unfortunately, the names of lexical variables are not available for
864completion.
865
4e1d3b43 866=head2 Editor Support for Debugging
867
868If you have GNU B<emacs> installed on your system, it can interact with
869the Perl debugger to provide an integrated software development
870environment reminiscent of its interactions with C debuggers.
871
872Perl is also delivered with a start file for making B<emacs> act like a
873syntax-directed editor that understands (some of) Perl's syntax. Look in
874the I<emacs> directory of the Perl source distribution.
875
876(Historically, a similar setup for interacting with B<vi> and the
877X11 window system had also been available, but at the time of this
878writing, no debugger support for B<vi> currently exists.)
879
880=head2 The Perl Profiler
881
882If you wish to supply an alternative debugger for Perl to run, just
883invoke your script with a colon and a package argument given to the B<-d>
884flag. One of the most popular alternative debuggers for Perl is
885B<DProf>, the Perl profiler. As of this writing, B<DProf> is not
886included with the standard Perl distribution, but it is expected to
887be included soon, for certain values of "soon".
888
889Meanwhile, you can fetch the Devel::Dprof module from CPAN. Assuming
890it's properly installed on your system, to profile your Perl program in
891the file F<mycode.pl>, just type:
892
893 perl -d:DProf mycode.pl
894
895When the script terminates the profiler will dump the profile information
896to a file called F<tmon.out>. A tool like B<dprofpp> (also supplied with
897the Devel::DProf package) can be used to interpret the information which is
898in that profile.
899
36477c24 900=head2 Debugger support in perl
4e1d3b43 901
e7ea3e70 902When you call the B<caller> function (see L<perlfunc/caller>) from the
903package DB, Perl sets the array @DB::args to contain the arguments the
54310121 904corresponding stack frame was called with.
4e1d3b43 905
36477c24 906If perl is run with B<-d> option, the following additional features
907are enabled:
a0d0e21e 908
36477c24 909=over
4e1d3b43 910
36477c24 911=item *
4e1d3b43 912
36477c24 913Perl inserts the contents of C<$ENV{PERL5DB}> (or C<BEGIN {require
914'perl5db.pl'}> if not present) before the first line of the
915application.
4e1d3b43 916
36477c24 917=item *
4e1d3b43 918
36477c24 919The array C<@{"_<$filename"}> is the line-by-line contents of
774d564b 920$filename for all the compiled files. Same for C<eval>ed strings which
921contain subroutines, or which are currently executed. The C<$filename>
36477c24 922for C<eval>ed strings looks like C<(eval 34)>.
4e1d3b43 923
36477c24 924=item *
4e1d3b43 925
36477c24 926The hash C<%{"_<$filename"}> contains breakpoints and action (it is
927keyed by line number), and individual entries are settable (as opposed
774d564b 928to the whole hash). Only true/false is important to Perl, though the
36477c24 929values used by F<perl5db.pl> have the form
774d564b 930C<"$break_condition\0$action">. Values are magical in numeric context:
36477c24 931they are zeros if the line is not breakable.
4e1d3b43 932
36477c24 933Same for evaluated strings which contain subroutines, or which are
774d564b 934currently executed. The C<$filename> for C<eval>ed strings looks like
36477c24 935C<(eval 34)>.
4e1d3b43 936
36477c24 937=item *
4e1d3b43 938
774d564b 939The scalar C<${"_<$filename"}> contains C<"_<$filename">. Same for
36477c24 940evaluated strings which contain subroutines, or which are currently
774d564b 941executed. The C<$filename> for C<eval>ed strings looks like C<(eval
36477c24 94234)>.
4e1d3b43 943
36477c24 944=item *
4e1d3b43 945
36477c24 946After each C<require>d file is compiled, but before it is executed,
947C<DB::postponed(*{"_<$filename"})> is called (if subroutine
774d564b 948C<DB::postponed> exists). Here the $filename is the expanded name of
36477c24 949the C<require>d file (as found in values of C<%INC>).
4e1d3b43 950
36477c24 951=item *
4e1d3b43 952
36477c24 953After each subroutine C<subname> is compiled existence of
774d564b 954C<$DB::postponed{subname}> is checked. If this key exists,
36477c24 955C<DB::postponed(subname)> is called (if subroutine C<DB::postponed>
956exists).
4e1d3b43 957
36477c24 958=item *
4e1d3b43 959
36477c24 960A hash C<%DB::sub> is maintained, with keys being subroutine names,
774d564b 961values having the form C<filename:startline-endline>. C<filename> has
36477c24 962the form C<(eval 31)> for subroutines defined inside C<eval>s.
4e1d3b43 963
36477c24 964=item *
965
5f05dabc 966When execution of the application reaches a place that can have
967a breakpoint, a call to C<DB::DB()> is performed if any one of
968variables $DB::trace, $DB::single, or $DB::signal is true. (Note that
36477c24 969these variables are not C<local>izable.) This feature is disabled when
970the control is inside C<DB::DB()> or functions called from it (unless
e7ea3e70 971C<$^D & (1E<lt>E<lt>30)>).
36477c24 972
973=item *
974
5f05dabc 975When execution of the application reaches a subroutine call, a call
36477c24 976to C<&DB::sub>(I<args>) is performed instead, with C<$DB::sub> being
977the name of the called subroutine. (Unless the subroutine is compiled
978in the package C<DB>.)
4e1d3b43 979
980=back
a0d0e21e 981
36477c24 982Note that no subroutine call is possible until C<&DB::sub> is defined
e7ea3e70 983(for subroutines outside of package C<DB>). (This restriction is
984recently lifted.)
985
986(In fact, for the standard debugger the same is true if C<$DB::deep>
987(how many levels of recursion deep into the debugger you can go before
988a mandatory break) is not defined.)
989
990With the recent updates the minimal possible debugger consists of one
991line
992
993 sub DB::DB {}
994
995which is quite handy as contents of C<PERL5DB> environment
996variable:
997
998 env "PERL5DB=sub DB::DB {}" perl -d your-script
999
1000Another (a little bit more useful) minimal debugger can be created
1001with the only line being
1002
1003 sub DB::DB {print ++$i; scalar <STDIN>}
1004
1005This debugger would print the sequential number of encountered
1006statement, and would wait for your C<CR> to continue.
1007
1008The following debugger is quite functional:
1009
54310121 1010 {
1011 package DB;
1012 sub DB {}
e7ea3e70 1013 sub sub {print ++$i, " $sub\n"; &$sub}
1014 }
1015
1016It prints the sequential number of subroutine call and the name of the
774d564b 1017called subroutine. Note that C<&DB::sub> should be compiled into the
e7ea3e70 1018package C<DB>.
36477c24 1019
1020=head2 Debugger Internals
1021
1022At the start, the debugger reads your rc file (F<./.perldb> or
54310121 1023F<~/.perldb> under Unix), which can set important options. This file may
36477c24 1024define a subroutine C<&afterinit> to be executed after the debugger is
1025initialized.
1026
5f05dabc 1027After the rc file is read, the debugger reads environment variable
36477c24 1028PERLDB_OPTS and parses it as a rest of C<O ...> line in debugger prompt.
1029
1030It also maintains magical internal variables, such as C<@DB::dbline>,
1031C<%DB::dbline>, which are aliases for C<@{"::_<current_file"}>
774d564b 1032C<%{"::_<current_file"}>. Here C<current_file> is the currently
36477c24 1033selected (with the debugger's C<f> command, or by flow of execution)
1034file.
1035
774d564b 1036Some functions are provided to simplify customization. See L<"Debugger
1037Customization"> for description of C<DB::parse_options(string)>. The
36477c24 1038function C<DB::dump_trace(skip[, count])> skips the specified number
1039of frames, and returns an array containing info about the caller
774d564b 1040frames (all if C<count> is missing). Each entry is a hash with keys
36477c24 1041C<context> (C<$> or C<@>), C<sub> (subroutine name, or info about
5f05dabc 1042eval), C<args> (C<undef> or a reference to an array), C<file>, and
36477c24 1043C<line>.
1044
54310121 1045The function C<DB::print_trace(FH, skip[, count[, short]])> prints
774d564b 1046formatted info about caller frames. The last two functions may be
36477c24 1047convenient as arguments to C<E<lt>>, C<E<lt>E<lt>> commands.
1048
a0d0e21e 1049=head2 Other resources
1050
1051You did try the B<-w> switch, didn't you?
1052
1053=head1 BUGS
1054
4e1d3b43 1055You cannot get the stack frame information or otherwise debug functions
1056that were not compiled by Perl, such as C or C++ extensions.
a0d0e21e 1057
4e1d3b43 1058If you alter your @_ arguments in a subroutine (such as with B<shift>
68dc0745 1059or B<pop>, the stack backtrace will not show the original values.