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