This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix description of "." in unpack() in perl5100delta
[perl5.git] / pod / perldebug.pod
CommitLineData
a0d0e21e 1=head1 NAME
d74e8afc 2X<debug> X<debugger>
a0d0e21e
LW
3
4perldebug - Perl debugging
5
6=head1 DESCRIPTION
7
8First of all, have you tried using the B<-w> switch?
9
f6b3c421
MJD
10
11If you're new to the Perl debugger, you may prefer to read
12L<perldebtut>, which is a tutorial introduction to the debugger .
13
4e1d3b43 14=head1 The Perl Debugger
15
16If you invoke Perl with the B<-d> switch, your script runs under the
17Perl source debugger. This works like an interactive Perl
18environment, prompting for debugger commands that let you examine
68dc0745 19source code, set breakpoints, get stack backtraces, change the values of
4e1d3b43 20variables, etc. This is so convenient that you often fire up
54310121 21the debugger all by itself just to test out Perl constructs
4e1d3b43 22interactively to see what they do. For example:
d74e8afc 23X<-d>
4e1d3b43 24
055fd3a9 25 $ perl -d -e 42
4e1d3b43 26
055fd3a9 27In Perl, the debugger is not a separate program the way it usually is in the
4e1d3b43 28typical compiled environment. Instead, the B<-d> flag tells the compiler
29to insert source information into the parse trees it's about to hand off
30to the interpreter. That means your code must first compile correctly
31for the debugger to work on it. Then when the interpreter starts up, it
055fd3a9 32preloads a special Perl library file containing the debugger.
4e1d3b43 33
34The program will halt I<right before> the first run-time executable
35statement (but see below regarding compile-time statements) and ask you
36to enter a debugger command. Contrary to popular expectations, whenever
37the debugger halts and shows you a line of code, it always displays the
38line it's I<about> to execute, rather than the one it has just executed.
39
40Any command not recognized by the debugger is directly executed
055fd3a9
GS
41(C<eval>'d) as Perl code in the current package. (The debugger
42uses the DB package for keeping its own state information.)
4e1d3b43 43
ea5ec306
SP
44Note that the said C<eval> is bound by an implicit scope. As a
45result any newly introduced lexical variable or any modified
46capture buffer content is lost after the eval. The debugger is a
47nice environment to learn Perl, but if you interactively experiment using
48material which should be in the same scope, stuff it in one line.
49
055fd3a9
GS
50For any text entered at the debugger prompt, leading and trailing whitespace
51is first stripped before further processing. If a debugger command
52coincides with some function in your own program, merely precede the
53function with something that doesn't look like a debugger command, such
54as a leading C<;> or perhaps a C<+>, or by wrapping it with parentheses
55or braces.
4e1d3b43 56
57=head2 Debugger Commands
58
59The debugger understands the following commands:
a0d0e21e
LW
60
61=over 12
62
492652be 63=item h
d74e8afc 64X<debugger command, h>
492652be
RF
65
66Prints out a summary help message
67
4e1d3b43 68=item h [command]
69
492652be 70Prints out a help message for the given debugger command.
4e1d3b43 71
492652be 72=item h h
4e1d3b43 73
492652be
RF
74The special argument of C<h h> produces the entire help page, which is quite long.
75
76If the output of the C<h h> command (or any command, for that matter) scrolls
055fd3a9
GS
77past your screen, precede the command with a leading pipe symbol so
78that it's run through your pager, as in
4e1d3b43 79
492652be
RF
80 DB> |h h
81
82You may change the pager which is used via C<o pager=...> command.
4e1d3b43 83
e7ea3e70 84
4e1d3b43 85=item p expr
d74e8afc 86X<debugger command, p>
4e1d3b43 87
36477c24 88Same as C<print {$DB::OUT} expr> in the current package. In particular,
c997b287 89because this is just Perl's own C<print> function, this means that nested
4e1d3b43 90data structures and objects are not dumped, unlike with the C<x> command.
91
e7ea3e70
IZ
92The C<DB::OUT> filehandle is opened to F</dev/tty>, regardless of
93where STDOUT may be redirected to.
94
3ae893bd 95=item x [maxdepth] expr
d74e8afc 96X<debugger command, x>
4e1d3b43 97
a991b806
JC
98Evaluates its expression in list context and dumps out the result in a
99pretty-printed fashion. Nested data structures are printed out
100recursively, unlike the real C<print> function in Perl. When dumping
101hashes, you'll probably prefer 'x \%h' rather than 'x %h'.
055fd3a9 102See L<Dumpvalue> if you'd like to do this yourself.
4e1d3b43 103
055fd3a9 104The output format is governed by multiple options described under
13a2d996 105L<"Configurable Options">.
36477c24 106
3ae893bd
MJD
107If the C<maxdepth> is included, it must be a numeral I<N>; the value is
108dumped only I<N> levels deep, as if the C<dumpDepth> option had been
5cc082a2 109temporarily set to I<N>.
3ae893bd 110
4e1d3b43 111=item V [pkg [vars]]
d74e8afc 112X<debugger command, V>
4e1d3b43 113
2e8f3c35 114Display all (or some) variables in package (defaulting to C<main>)
055fd3a9
GS
115using a data pretty-printer (hashes show their keys and values so
116you see what's what, control characters are made printable, etc.).
117Make sure you don't put the type specifier (like C<$>) there, just
118the symbol names, like this:
4e1d3b43 119
120 V DB filename line
121
055fd3a9 122Use C<~pattern> and C<!pattern> for positive and negative regexes.
4e1d3b43 123
055fd3a9 124This is similar to calling the C<x> command on each applicable var.
36477c24 125
4e1d3b43 126=item X [vars]
d74e8afc 127X<debugger command, X>
4e1d3b43 128
129Same as C<V currentpackage [vars]>.
a0d0e21e 130
a7b657ee 131=item y [level [vars]]
d74e8afc 132X<debugger command, y>
a7b657ee
PS
133
134Display all (or some) lexical variables (mnemonic: C<mY> variables)
135in the current scope or I<level> scopes higher. You can limit the
136variables that you see with I<vars> which works exactly as it does
137for the C<V> and C<X> commands. Requires the C<PadWalker> module
138version 0.08 or higher; will warn if this isn't installed. Output
139is pretty-printed in the same style as for C<V> and the format is
140controlled by the same options.
141
a0d0e21e 142=item T
d74e8afc 143X<debugger command, T> X<backtrace> X<stack, backtrace>
a0d0e21e 144
68dc0745 145Produce a stack backtrace. See below for details on its output.
a0d0e21e 146
4e1d3b43 147=item s [expr]
d74e8afc 148X<debugger command, s> X<step>
a0d0e21e 149
055fd3a9 150Single step. Executes until the beginning of another
4e1d3b43 151statement, descending into subroutine calls. If an expression is
152supplied that includes function calls, it too will be single-stepped.
a0d0e21e 153
e7ea3e70 154=item n [expr]
d74e8afc 155X<debugger command, n>
a0d0e21e 156
055fd3a9 157Next. Executes over subroutine calls, until the beginning
774d564b 158of the next statement. If an expression is supplied that includes
159function calls, those functions will be executed with stops before
160each statement.
a0d0e21e 161
dce0c882 162=item r
d74e8afc 163X<debugger command, r>
dce0c882 164
055fd3a9
GS
165Continue until the return from the current subroutine.
166Dump the return value if the C<PrintRet> option is set (default).
dce0c882 167
c47ff5f1 168=item <CR>
a0d0e21e 169
4e1d3b43 170Repeat last C<n> or C<s> command.
a0d0e21e 171
36477c24 172=item c [line|sub]
d74e8afc 173X<debugger command, c>
a0d0e21e 174
4e1d3b43 175Continue, optionally inserting a one-time-only breakpoint
36477c24 176at the specified line or subroutine.
a0d0e21e 177
4e1d3b43 178=item l
d74e8afc 179X<debugger command, l>
a0d0e21e 180
4e1d3b43 181List next window of lines.
a0d0e21e
LW
182
183=item l min+incr
184
4e1d3b43 185List C<incr+1> lines starting at C<min>.
a0d0e21e
LW
186
187=item l min-max
188
c47ff5f1 189List lines C<min> through C<max>. C<l -> is synonymous to C<->.
a0d0e21e
LW
190
191=item l line
192
4e1d3b43 193List a single line.
a0d0e21e 194
4e1d3b43 195=item l subname
a0d0e21e 196
83ee9e09 197List first window of lines from subroutine. I<subname> may
055fd3a9 198be a variable that contains a code reference.
a0d0e21e
LW
199
200=item -
d74e8afc 201X<debugger command, ->
a0d0e21e 202
4e1d3b43 203List previous window of lines.
a0d0e21e 204
492652be 205=item v [line]
d74e8afc 206X<debugger command, v>
a0d0e21e 207
492652be 208View a few lines of code around the current line.
a0d0e21e 209
4e1d3b43 210=item .
d74e8afc 211X<debugger command, .>
a0d0e21e 212
055fd3a9
GS
213Return the internal debugger pointer to the line last
214executed, and print out that line.
4e1d3b43 215
216=item f filename
d74e8afc 217X<debugger command, f>
4e1d3b43 218
055fd3a9 219Switch to viewing a different file or C<eval> statement. If I<filename>
2e8f3c35 220is not a full pathname found in the values of %INC, it is considered
055fd3a9 221a regex.
a0d0e21e 222
bee32ff8
GS
223C<eval>ed strings (when accessible) are considered to be filenames:
224C<f (eval 7)> and C<f eval 7\b> access the body of the 7th C<eval>ed string
055fd3a9
GS
225(in the order of execution). The bodies of the currently executed C<eval>
226and of C<eval>ed strings that define subroutines are saved and thus
227accessible.
bee32ff8 228
a0d0e21e
LW
229=item /pattern/
230
055fd3a9 231Search forwards for pattern (a Perl regex); final / is optional.
ae55e07e 232The search is case-insensitive by default.
a0d0e21e
LW
233
234=item ?pattern?
235
4e1d3b43 236Search backwards for pattern; final ? is optional.
ae55e07e 237The search is case-insensitive by default.
a0d0e21e 238
492652be 239=item L [abw]
d74e8afc 240X<debugger command, L>
a0d0e21e 241
492652be 242List (default all) actions, breakpoints and watch expressions
a0d0e21e 243
055fd3a9 244=item S [[!]regex]
d74e8afc 245X<debugger command, S>
a0d0e21e 246
055fd3a9 247List subroutine names [not] matching the regex.
a0d0e21e
LW
248
249=item t
d74e8afc 250X<debugger command, t>
a0d0e21e 251
055fd3a9 252Toggle trace mode (see also the C<AutoTrace> option).
4e1d3b43 253
254=item t expr
d74e8afc 255X<debugger command, t>
4e1d3b43 256
055fd3a9
GS
257Trace through execution of C<expr>.
258See L<perldebguts/"Frame Listing Output Examples"> for examples.
4e1d3b43 259
492652be 260=item b
d74e8afc
ITB
261X<breakpoint>
262X<debugger command, b>
492652be
RF
263
264Sets breakpoint on current line
265
4e1d3b43 266=item b [line] [condition]
d74e8afc
ITB
267X<breakpoint>
268X<debugger command, b>
a0d0e21e 269
492652be 270Set a breakpoint before the given line. If a condition
055fd3a9
GS
271is specified, it's evaluated each time the statement is reached: a
272breakpoint is taken only if the condition is true. Breakpoints may
273only be set on lines that begin an executable statement. Conditions
c997b287 274don't use C<if>:
a0d0e21e
LW
275
276 b 237 $x > 30
36477c24 277 b 237 ++$count237 < 11
a0d0e21e
LW
278 b 33 /pattern/i
279
4e1d3b43 280=item b subname [condition]
d74e8afc
ITB
281X<breakpoint>
282X<debugger command, b>
a0d0e21e 283
055fd3a9
GS
284Set a breakpoint before the first line of the named subroutine. I<subname> may
285be a variable containing a code reference (in this case I<condition>
83ee9e09 286is not supported).
a0d0e21e 287
36477c24 288=item b postpone subname [condition]
d74e8afc
ITB
289X<breakpoint>
290X<debugger command, b>
36477c24 291
055fd3a9 292Set a breakpoint at first line of subroutine after it is compiled.
36477c24 293
294=item b load filename
d74e8afc
ITB
295X<breakpoint>
296X<debugger command, b>
36477c24 297
055fd3a9
GS
298Set a breakpoint before the first executed line of the I<filename>,
299which should be a full pathname found amongst the %INC values.
e7ea3e70
IZ
300
301=item b compile subname
d74e8afc
ITB
302X<breakpoint>
303X<debugger command, b>
e7ea3e70 304
055fd3a9
GS
305Sets a breakpoint before the first statement executed after the specified
306subroutine is compiled.
36477c24 307
492652be 308=item B line
d74e8afc
ITB
309X<breakpoint>
310X<debugger command, B>
a0d0e21e 311
2e8f3c35 312Delete a breakpoint from the specified I<line>.
a0d0e21e 313
492652be 314=item B *
d74e8afc
ITB
315X<breakpoint>
316X<debugger command, B>
a0d0e21e 317
4e1d3b43 318Delete all installed breakpoints.
319
320=item a [line] command
d74e8afc 321X<debugger command, a>
4e1d3b43 322
055fd3a9
GS
323Set an action to be done before the line is executed. If I<line> is
324omitted, set an action on the line about to be executed.
4e1d3b43 325The sequence of steps taken by the debugger is
326
8ebc5c01 327 1. check for a breakpoint at this line
328 2. print the line if necessary (tracing)
329 3. do any actions associated with that line
330 4. prompt user if at a breakpoint or in single-step
331 5. evaluate line
a0d0e21e 332
7b8d334a 333For example, this will print out $foo every time line
4e1d3b43 33453 is passed:
a0d0e21e 335
4e1d3b43 336 a 53 print "DB FOUND $foo\n"
a0d0e21e 337
492652be 338=item A line
d74e8afc 339X<debugger command, A>
3fbd6552 340
2e8f3c35 341Delete an action from the specified line.
3fbd6552 342
492652be 343=item A *
d74e8afc 344X<debugger command, A>
a0d0e21e 345
4e1d3b43 346Delete all installed actions.
347
492652be 348=item w expr
d74e8afc 349X<debugger command, w>
6ee623d5 350
055fd3a9 351Add a global watch-expression. We hope you know what one of these
2e8f3c35 352is, because they're supposed to be obvious.
6ee623d5 353
492652be 354=item W expr
d74e8afc 355X<debugger command, W>
492652be
RF
356
357Delete watch-expression
358
359=item W *
d74e8afc 360X<debugger command, W>
6ee623d5
GS
361
362Delete all watch-expressions.
363
492652be 364=item o
d74e8afc 365X<debugger command, o>
492652be
RF
366
367Display all options
368
369=item o booloption ...
d74e8afc 370X<debugger command, o>
055fd3a9
GS
371
372Set each listed Boolean option to the value C<1>.
373
492652be 374=item o anyoption? ...
d74e8afc 375X<debugger command, o>
055fd3a9
GS
376
377Print out the value of one or more options.
378
492652be 379=item o option=value ...
d74e8afc 380X<debugger command, o>
055fd3a9
GS
381
382Set the value of one or more options. If the value has internal
492652be 383whitespace, it should be quoted. For example, you could set C<o
055fd3a9
GS
384pager="less -MQeicsNfr"> to call B<less> with those specific options.
385You may use either single or double quotes, but if you do, you must
386escape any embedded instances of same sort of quote you began with,
387as well as any escaping any escapes that immediately precede that
388quote but which are not meant to escape the quote itself. In other
389words, you follow single-quoting rules irrespective of the quote;
492652be 390eg: C<o option='this isn\'t bad'> or C<o option="She said, \"Isn't
055fd3a9
GS
391it?\"">.
392
393For historical reasons, the C<=value> is optional, but defaults to
3941 only where it is safe to do so--that is, mostly for Boolean
395options. It is always better to assign a specific value using C<=>.
396The C<option> can be abbreviated, but for clarity probably should
2e8f3c35 397not be. Several options can be set together. See L<"Configurable Options">
13a2d996 398for a list of these.
055fd3a9 399
2e8f3c35 400=item < ?
d74e8afc 401X<< debugger command, < >>
055fd3a9
GS
402
403List out all pre-prompt Perl command actions.
404
405=item < [ command ]
d74e8afc 406X<< debugger command, < >>
055fd3a9
GS
407
408Set an action (Perl command) to happen before every debugger prompt.
2e8f3c35 409A multi-line command may be entered by backslashing the newlines.
0d6091f7 410
2e8f3c35 411=item < *
d74e8afc 412X<< debugger command, < >>
0d6091f7
RF
413
414Delete all pre-prompt Perl command actions.
055fd3a9
GS
415
416=item << command
d74e8afc 417X<< debugger command, << >>
055fd3a9
GS
418
419Add an action (Perl command) to happen before every debugger prompt.
420A multi-line command may be entered by backwhacking the newlines.
421
422=item > ?
d74e8afc 423X<< debugger command, > >>
055fd3a9
GS
424
425List out post-prompt Perl command actions.
426
427=item > command
d74e8afc 428X<< debugger command, > >>
055fd3a9
GS
429
430Set an action (Perl command) to happen after the prompt when you've
431just given a command to return to executing the script. A multi-line
432command may be entered by backslashing the newlines (we bet you
353c6505 433couldn't have guessed this by now).
0d6091f7 434
2e8f3c35 435=item > *
d74e8afc 436X<< debugger command, > >>
0d6091f7
RF
437
438Delete all post-prompt Perl command actions.
055fd3a9
GS
439
440=item >> command
d74e8afc 441X<<< debugger command, >> >>>
055fd3a9
GS
442
443Adds an action (Perl command) to happen after the prompt when you've
444just given a command to return to executing the script. A multi-line
b1866b2d 445command may be entered by backslashing the newlines.
055fd3a9
GS
446
447=item { ?
d74e8afc 448X<debugger command, {>
055fd3a9
GS
449
450List out pre-prompt debugger commands.
451
452=item { [ command ]
453
454Set an action (debugger command) to happen before every debugger prompt.
2e8f3c35 455A multi-line command may be entered in the customary fashion.
055fd3a9
GS
456
457Because this command is in some senses new, a warning is issued if
458you appear to have accidentally entered a block instead. If that's
2e8f3c35 459what you mean to do, write it as with C<;{ ... }> or even
055fd3a9
GS
460C<do { ... }>.
461
2e8f3c35 462=item { *
d74e8afc 463X<debugger command, {>
0d6091f7
RF
464
465Delete all pre-prompt debugger commands.
466
055fd3a9 467=item {{ command
d74e8afc 468X<debugger command, {{>
055fd3a9
GS
469
470Add an action (debugger command) to happen before every debugger prompt.
471A multi-line command may be entered, if you can guess how: see above.
472
473=item ! number
d74e8afc 474X<debugger command, !>
055fd3a9
GS
475
476Redo a previous command (defaults to the previous command).
477
478=item ! -number
d74e8afc 479X<debugger command, !>
055fd3a9
GS
480
481Redo number'th previous command.
482
483=item ! pattern
d74e8afc 484X<debugger command, !>
055fd3a9
GS
485
486Redo last command that started with pattern.
492652be 487See C<o recallCommand>, too.
055fd3a9
GS
488
489=item !! cmd
d74e8afc 490X<debugger command, !!>
055fd3a9
GS
491
492Run cmd in a subprocess (reads from DB::IN, writes to DB::OUT) See
492652be 493C<o shellBang>, also. Note that the user's current shell (well,
055fd3a9
GS
494their C<$ENV{SHELL}> variable) will be used, which can interfere
495with proper interpretation of exit status or signal and coredump
496information.
497
947cb114 498=item source file
d74e8afc 499X<debugger command, source>
5bad0d9e 500
947cb114
PS
501Read and execute debugger commands from I<file>.
502I<file> may itself contain C<source> commands.
5bad0d9e 503
055fd3a9 504=item H -number
d74e8afc 505X<debugger command, H>
055fd3a9
GS
506
507Display last n commands. Only commands longer than one character are
508listed. If I<number> is omitted, list them all.
509
510=item q or ^D
d74e8afc
ITB
511X<debugger command, q>
512X<debugger command, ^D>
055fd3a9
GS
513
514Quit. ("quit" doesn't work for this, unless you've made an alias)
515This is the only supported way to exit the debugger, though typing
516C<exit> twice might work.
517
518Set the C<inhibit_exit> option to 0 if you want to be able to step
2e8f3c35 519off the end the script. You may also need to set $finished to 0
055fd3a9
GS
520if you want to step through global destruction.
521
522=item R
d74e8afc 523X<debugger command, R>
055fd3a9
GS
524
525Restart the debugger by C<exec()>ing a new session. We try to maintain
526your history across this, but internal settings and command-line options
527may be lost.
528
529The following setting are currently preserved: history, breakpoints,
530actions, debugger options, and the Perl command-line
531options B<-w>, B<-I>, and B<-e>.
532
533=item |dbcmd
d74e8afc 534X<debugger command, |>
055fd3a9
GS
535
536Run the debugger command, piping DB::OUT into your current pager.
537
538=item ||dbcmd
d74e8afc 539X<debugger command, ||>
055fd3a9 540
c997b287 541Same as C<|dbcmd> but DB::OUT is temporarily C<select>ed as well.
055fd3a9
GS
542
543=item = [alias value]
d74e8afc 544X<debugger command, =>
055fd3a9
GS
545
546Define a command alias, like
547
548 = quit q
549
550or list current aliases.
551
552=item command
553
554Execute command as a Perl statement. A trailing semicolon will be
555supplied. If the Perl statement would otherwise be confused for a
556Perl debugger, use a leading semicolon, too.
557
558=item m expr
d74e8afc 559X<debugger command, m>
055fd3a9
GS
560
561List which methods may be called on the result of the evaluated
2e8f3c35 562expression. The expression may evaluated to a reference to a
055fd3a9
GS
563blessed object, or to a package name.
564
492652be 565=item M
d74e8afc 566X<debugger command, M>
492652be
RF
567
568Displays all loaded modules and their versions
569
570
055fd3a9 571=item man [manpage]
d74e8afc 572X<debugger command, man>
055fd3a9
GS
573
574Despite its name, this calls your system's default documentation
575viewer on the given page, or on the viewer itself if I<manpage> is
576omitted. If that viewer is B<man>, the current C<Config> information
577is used to invoke B<man> using the proper MANPATH or S<B<-M>
578I<manpath>> option. Failed lookups of the form C<XXX> that match
579known manpages of the form I<perlXXX> will be retried. This lets
580you type C<man debug> or C<man op> from the debugger.
581
582On systems traditionally bereft of a usable B<man> command, the
583debugger invokes B<perldoc>. Occasionally this determination is
584incorrect due to recalcitrant vendors or rather more felicitously,
585to enterprising users. If you fall into either category, just
586manually set the $DB::doccmd variable to whatever viewer to view
587the Perl documentation on your system. This may be set in an rc
588file, or through direct assignment. We're still waiting for a
589working example of something along the lines of:
4e1d3b43 590
055fd3a9
GS
591 $DB::doccmd = 'netscape -remote http://something.here/';
592
593=back
594
595=head2 Configurable Options
596
492652be 597The debugger has numerous options settable using the C<o> command,
055fd3a9 598either interactively or from the environment or an rc file.
e00d725b
MJD
599(./.perldb or ~/.perldb under Unix.)
600
4e1d3b43 601
602=over 12
603
e7ea3e70 604=item C<recallCommand>, C<ShellBang>
d74e8afc
ITB
605X<debugger option, recallCommand>
606X<debugger option, ShellBang>
4e1d3b43 607
608The characters used to recall command or spawn shell. By
055fd3a9 609default, both are set to C<!>, which is unfortunate.
4e1d3b43 610
e7ea3e70 611=item C<pager>
d74e8afc 612X<debugger option, pager>
4e1d3b43 613
055fd3a9
GS
614Program to use for output of pager-piped commands (those beginning
615with a C<|> character.) By default, C<$ENV{PAGER}> will be used.
616Because the debugger uses your current terminal characteristics
617for bold and underlining, if the chosen pager does not pass escape
618sequences through unchanged, the output of some debugger commands
619will not be readable when sent through the pager.
4e1d3b43 620
e7ea3e70 621=item C<tkRunning>
d74e8afc 622X<debugger option, tkRunning>
36477c24 623
624Run Tk while prompting (with ReadLine).
625
e7ea3e70 626=item C<signalLevel>, C<warnLevel>, C<dieLevel>
d74e8afc
ITB
627X<debugger option, signalLevel> X<debugger option, warnLevel>
628X<debugger option, dieLevel>
e7ea3e70 629
4c82ae22
GS
630Level of verbosity. By default, the debugger leaves your exceptions
631and warnings alone, because altering them can break correctly running
632programs. It will attempt to print a message when uncaught INT, BUS, or
633SEGV signals arrive. (But see the mention of signals in L<BUGS> below.)
634
635To disable this default safe mode, set these values to something higher
636than 0. At a level of 1, you get backtraces upon receiving any kind
637of warning (this is often annoying) or exception (this is
638often valuable). Unfortunately, the debugger cannot discern fatal
639exceptions from non-fatal ones. If C<dieLevel> is even 1, then your
640non-fatal exceptions are also traced and unceremoniously altered if they
353c6505 641came from C<eval'ed> strings or from any kind of C<eval> within modules
4c82ae22
GS
642you're attempting to load. If C<dieLevel> is 2, the debugger doesn't
643care where they came from: It usurps your exception handler and prints
644out a trace, then modifies all exceptions with its own embellishments.
645This may perhaps be useful for some tracing purposes, but tends to hopelessly
646destroy any program that takes its exception handling seriously.
36477c24 647
e7ea3e70 648=item C<AutoTrace>
d74e8afc 649X<debugger option, AutoTrace>
36477c24 650
e7ea3e70
IZ
651Trace mode (similar to C<t> command, but can be put into
652C<PERLDB_OPTS>).
36477c24 653
e7ea3e70 654=item C<LineInfo>
d74e8afc 655X<debugger option, LineInfo>
36477c24 656
e7ea3e70 657File or pipe to print line number info to. If it is a pipe (say,
055fd3a9
GS
658C<|visual_perl_db>), then a short message is used. This is the
659mechanism used to interact with a slave editor or visual debugger,
660such as the special C<vi> or C<emacs> hooks, or the C<ddd> graphical
661debugger.
36477c24 662
663=item C<inhibit_exit>
d74e8afc 664X<debugger option, inhibit_exit>
36477c24 665
666If 0, allows I<stepping off> the end of the script.
667
54310121 668=item C<PrintRet>
d74e8afc 669X<debugger option, PrintRet>
36477c24 670
04cf9722 671Print return value after C<r> command if set (default).
36477c24 672
28d1fb14 673=item C<ornaments>
d74e8afc 674X<debugger option, ornaments>
28d1fb14 675
055fd3a9
GS
676Affects screen appearance of the command line (see L<Term::ReadLine>).
677There is currently no way to disable these, which can render
678some output illegible on some displays, or with some pagers.
679This is considered a bug.
28d1fb14 680
54310121 681=item C<frame>
d74e8afc 682X<debugger option, frame>
36477c24 683
055fd3a9 684Affects the printing of messages upon entry and exit from subroutines. If
36477c24 685C<frame & 2> is false, messages are printed on entry only. (Printing
055fd3a9 686on exit might be useful if interspersed with other messages.)
36477c24 687
055fd3a9
GS
688If C<frame & 4>, arguments to functions are printed, plus context
689and caller info. If C<frame & 8>, overloaded C<stringify> and
690C<tie>d C<FETCH> is enabled on the printed arguments. If C<frame
691& 16>, the return value from the subroutine is printed.
28d1fb14
IZ
692
693The length at which the argument list is truncated is governed by the
694next option:
e7ea3e70
IZ
695
696=item C<maxTraceLen>
d74e8afc 697X<debugger option, maxTraceLen>
e7ea3e70 698
055fd3a9 699Length to truncate the argument list when the C<frame> option's
e7ea3e70 700bit 4 is set.
36477c24 701
6f891d7d 702=item C<windowSize>
d74e8afc 703X<debugger option, windowSize>
6f891d7d
SM
704
705Change the size of code list window (default is 10 lines).
706
4e1d3b43 707=back
708
709The following options affect what happens with C<V>, C<X>, and C<x>
710commands:
711
712=over 12
713
e7ea3e70 714=item C<arrayDepth>, C<hashDepth>
d74e8afc 715X<debugger option, arrayDepth> X<debugger option, hashDepth>
4e1d3b43 716
717Print only first N elements ('' for all).
718
d03c2a1b 719=item C<dumpDepth>
d74e8afc 720X<debugger option, dumpDepth>
d03c2a1b
MJD
721
722Limit recursion depth to N levels when dumping structures.
723Negative values are interpreted as infinity. Default: infinity.
724
e7ea3e70 725=item C<compactDump>, C<veryCompact>
d74e8afc 726X<debugger option, compactDump> X<debugger option, veryCompact>
4e1d3b43 727
055fd3a9 728Change the style of array and hash output. If C<compactDump>, short array
e7ea3e70 729may be printed on one line.
4e1d3b43 730
e7ea3e70 731=item C<globPrint>
d74e8afc 732X<debugger option, globPrint>
4e1d3b43 733
734Whether to print contents of globs.
735
e7ea3e70 736=item C<DumpDBFiles>
d74e8afc 737X<debugger option, DumpDBFiles>
4e1d3b43 738
739Dump arrays holding debugged files.
740
e7ea3e70 741=item C<DumpPackages>
d74e8afc 742X<debugger option, DumpPackages>
4e1d3b43 743
744Dump symbol tables of packages.
745
6ee623d5 746=item C<DumpReused>
d74e8afc 747X<debugger option, DumpReused>
6ee623d5
GS
748
749Dump contents of "reused" addresses.
750
e7ea3e70 751=item C<quote>, C<HighBit>, C<undefPrint>
d74e8afc
ITB
752X<debugger option, quote> X<debugger option, HighBit>
753X<debugger option, undefPrint>
e7ea3e70 754
055fd3a9
GS
755Change the style of string dump. The default value for C<quote>
756is C<auto>; one can enable double-quotish or single-quotish format
757by setting it to C<"> or C<'>, respectively. By default, characters
758with their high bit set are printed verbatim.
e7ea3e70 759
54310121 760=item C<UsageOnly>
d74e8afc 761X<debugger option, UsageOnly>
4e1d3b43 762
055fd3a9
GS
763Rudimentary per-package memory usage dump. Calculates total
764size of strings found in variables in the package. This does not
765include lexicals in a module's file scope, or lost in closures.
4e1d3b43 766
36477c24 767=back
4e1d3b43 768
e00d725b 769After the rc file is read, the debugger reads the C<$ENV{PERLDB_OPTS}>
66a1b24b 770environment variable and parses this as the remainder of a "O ..."
e00d725b
MJD
771line as one might enter at the debugger prompt. You may place the
772initialization options C<TTY>, C<noTTY>, C<ReadLine>, and C<NonStop>
773there.
36477c24 774
055fd3a9 775If your rc file contains:
4e1d3b43 776
055fd3a9 777 parse_options("NonStop=1 LineInfo=db.out AutoTrace");
4e1d3b43 778
055fd3a9
GS
779then your script will run without human intervention, putting trace
780information into the file I<db.out>. (If you interrupt it, you'd
781better reset C<LineInfo> to F</dev/tty> if you expect to see anything.)
4e1d3b43 782
36477c24 783=over 12
4e1d3b43 784
36477c24 785=item C<TTY>
d74e8afc 786X<debugger option, TTY>
4e1d3b43 787
36477c24 788The TTY to use for debugging I/O.
789
36477c24 790=item C<noTTY>
d74e8afc 791X<debugger option, noTTY>
36477c24 792
055fd3a9
GS
793If set, the debugger goes into C<NonStop> mode and will not connect to a TTY. If
794interrupted (or if control goes to the debugger via explicit setting of
795$DB::signal or $DB::single from the Perl script), it connects to a TTY
796specified in the C<TTY> option at startup, or to a tty found at
797runtime using the C<Term::Rendezvous> module of your choice.
36477c24 798
055fd3a9 799This module should implement a method named C<new> that returns an object
200f06d0 800with two methods: C<IN> and C<OUT>. These should return filehandles to use
055fd3a9
GS
801for debugging input and output correspondingly. The C<new> method should
802inspect an argument containing the value of C<$ENV{PERLDB_NOTTY}> at
2e8f3c35 803startup, or C<"$ENV{HOME}/.perldbtty$$"> otherwise. This file is not
055fd3a9
GS
804inspected for proper ownership, so security hazards are theoretically
805possible.
36477c24 806
807=item C<ReadLine>
d74e8afc 808X<debugger option, ReadLine>
36477c24 809
055fd3a9
GS
810If false, readline support in the debugger is disabled in order
811to debug applications that themselves use ReadLine.
36477c24 812
813=item C<NonStop>
d74e8afc 814X<debugger option, NonStop>
36477c24 815
055fd3a9 816If set, the debugger goes into non-interactive mode until interrupted, or
36477c24 817programmatically by setting $DB::signal or $DB::single.
818
819=back
820
821Here's an example of using the C<$ENV{PERLDB_OPTS}> variable:
4e1d3b43 822
055fd3a9 823 $ PERLDB_OPTS="NonStop frame=2" perl -d myprogram
4e1d3b43 824
055fd3a9
GS
825That will run the script B<myprogram> without human intervention,
826printing out the call tree with entry and exit points. Note that
827C<NonStop=1 frame=2> is equivalent to C<N f=2>, and that originally,
828options could be uniquely abbreviated by the first letter (modulo
829the C<Dump*> options). It is nevertheless recommended that you
830always spell them out in full for legibility and future compatibility.
4e1d3b43 831
055fd3a9 832Other examples include
a0d0e21e 833
1472e7de 834 $ PERLDB_OPTS="NonStop LineInfo=listing frame=2" perl -d myprogram
a0d0e21e 835
055fd3a9
GS
836which runs script non-interactively, printing info on each entry
837into a subroutine and each executed line into the file named F<listing>.
838(If you interrupt it, you would better reset C<LineInfo> to something
36477c24 839"interactive"!)
840
055fd3a9
GS
841Other examples include (using standard shell syntax to show environment
842variable settings):
36477c24 843
055fd3a9
GS
844 $ ( PERLDB_OPTS="NonStop frame=1 AutoTrace LineInfo=tperl.out"
845 perl -d myprogram )
36477c24 846
055fd3a9
GS
847which may be useful for debugging a program that uses C<Term::ReadLine>
848itself. Do not forget to detach your shell from the TTY in the window that
849corresponds to F</dev/ttyXX>, say, by issuing a command like
36477c24 850
e7ea3e70 851 $ sleep 1000000
36477c24 852
055fd3a9 853See L<perldebguts/"Debugger Internals"> for details.
a0d0e21e 854
e7ea3e70
IZ
855=head2 Debugger input/output
856
857=over 8
858
859=item Prompt
860
4e1d3b43 861The debugger prompt is something like
862
863 DB<8>
864
865or even
866
867 DB<<17>>
868
055fd3a9
GS
869where that number is the command number, and which you'd use to
870access with the built-in B<csh>-like history mechanism. For example,
871C<!17> would repeat command number 17. The depth of the angle
872brackets indicates the nesting depth of the debugger. You could
873get more than one set of brackets, for example, if you'd already
874at a breakpoint and then printed the result of a function call that
875itself has a breakpoint, or you step into an expression via C<s/n/t
876expression> command.
4e1d3b43 877
54310121 878=item Multiline commands
e7ea3e70 879
4a6725af 880If you want to enter a multi-line command, such as a subroutine
055fd3a9
GS
881definition with several statements or a format, escape the newline
882that would normally end the debugger command with a backslash.
e7ea3e70 883Here's an example:
a0d0e21e 884
4e1d3b43 885 DB<1> for (1..4) { \
886 cont: print "ok\n"; \
887 cont: }
888 ok
889 ok
890 ok
891 ok
892
893Note that this business of escaping a newline is specific to interactive
894commands typed into the debugger.
895
e7ea3e70 896=item Stack backtrace
d74e8afc 897X<backtrace> X<stack, backtrace>
e7ea3e70 898
68dc0745 899Here's an example of what a stack backtrace via C<T> command might
e7ea3e70 900look like:
4e1d3b43 901
902 $ = main::infested called from file `Ambulation.pm' line 10
903 @ = Ambulation::legs(1, 2, 3, 4) called from file `camel_flea' line 7
904 $ = main::pests('bactrian', 4) called from file `camel_flea' line 4
905
055fd3a9
GS
906The left-hand character up there indicates the context in which the
907function was called, with C<$> and C<@> meaning scalar or list
908contexts respectively, and C<.> meaning void context (which is
909actually a sort of scalar context). The display above says
910that you were in the function C<main::infested> when you ran the
911stack dump, and that it was called in scalar context from line
91210 of the file I<Ambulation.pm>, but without any arguments at all,
913meaning it was called as C<&infested>. The next stack frame shows
914that the function C<Ambulation::legs> was called in list context
915from the I<camel_flea> file with four arguments. The last stack
916frame shows that C<main::pests> was called in scalar context,
917also from I<camel_flea>, but from line 4.
4e1d3b43 918
055fd3a9
GS
919If you execute the C<T> command from inside an active C<use>
920statement, the backtrace will contain both a C<require> frame and
921an C<eval>) frame.
e7ea3e70 922
055fd3a9 923=item Line Listing Format
e7ea3e70 924
055fd3a9 925This shows the sorts of output the C<l> command can produce:
e7ea3e70
IZ
926
927 DB<<13>> l
928 101: @i{@i} = ();
929 102:b @isa{@i,$pack} = ()
930 103 if(exists $i{$prevpack} || exists $isa{$pack});
931 104 }
932 105
933 106 next
934 107==> if(exists $isa{$pack});
935 108
936 109:a if ($extra-- > 0) {
937 110: %isa = ($pack,1);
938
055fd3a9
GS
939Breakable lines are marked with C<:>. Lines with breakpoints are
940marked by C<b> and those with actions by C<a>. The line that's
941about to be executed is marked by C<< ==> >>.
e7ea3e70 942
003183f2
GS
943Please be aware that code in debugger listings may not look the same
944as your original source code. Line directives and external source
945filters can alter the code before Perl sees it, causing code to move
946from its original positions or take on entirely different forms.
947
e7ea3e70
IZ
948=item Frame listing
949
055fd3a9
GS
950When the C<frame> option is set, the debugger would print entered (and
951optionally exited) subroutines in different styles. See L<perldebguts>
952for incredibly long examples of these.
e7ea3e70
IZ
953
954=back
955
956=head2 Debugging compile-time statements
957
055fd3a9 958If you have compile-time executable statements (such as code within
3c10abe3
AG
959BEGIN, UNITCHECK and CHECK blocks or C<use> statements), these will
960I<not> be stopped by debugger, although C<require>s and INIT blocks
961will, and compile-time statements can be traced with C<AutoTrace>
962option set in C<PERLDB_OPTS>). From your own Perl code, however, you
963can transfer control back to the debugger using the following
964statement, which is harmless if the debugger is not running:
a0d0e21e
LW
965
966 $DB::single = 1;
967
055fd3a9 968If you set C<$DB::single> to 2, it's equivalent to having
4e1d3b43 969just typed the C<n> command, whereas a value of 1 means the C<s>
970command. The C<$DB::trace> variable should be set to 1 to simulate
971having typed the C<t> command.
972
055fd3a9
GS
973Another way to debug compile-time code is to start the debugger, set a
974breakpoint on the I<load> of some module:
e7ea3e70
IZ
975
976 DB<7> b load f:/perllib/lib/Carp.pm
977 Will stop on load of `f:/perllib/lib/Carp.pm'.
978
055fd3a9 979and then restart the debugger using the C<R> command (if possible). One can use C<b
e7ea3e70
IZ
980compile subname> for the same purpose.
981
4e1d3b43 982=head2 Debugger Customization
a0d0e21e 983
055fd3a9
GS
984The debugger probably contains enough configuration hooks that you
985won't ever have to modify it yourself. You may change the behaviour
492652be 986of debugger from within the debugger using its C<o> command, from
055fd3a9
GS
987the command line via the C<PERLDB_OPTS> environment variable, and
988from customization files.
a0d0e21e 989
055fd3a9 990You can do some customization by setting up a F<.perldb> file, which
a0d0e21e 991contains initialization code. For instance, you could make aliases
4e1d3b43 992like these (the last one is one people expect to be there):
a0d0e21e 993
4e1d3b43 994 $DB::alias{'len'} = 's/^len(.*)/p length($1)/';
a0d0e21e 995 $DB::alias{'stop'} = 's/^stop (at|in)/b/';
4e1d3b43 996 $DB::alias{'ps'} = 's/^ps\b/p scalar /';
055fd3a9 997 $DB::alias{'quit'} = 's/^quit(\s*)/exit/';
4e1d3b43 998
055fd3a9 999You can change options from F<.perldb> by using calls like this one;
36477c24 1000
1001 parse_options("NonStop=1 LineInfo=db.out AutoTrace=1 frame=2");
1002
055fd3a9 1003The code is executed in the package C<DB>. Note that F<.perldb> is
774d564b 1004processed before processing C<PERLDB_OPTS>. If F<.perldb> defines the
055fd3a9 1005subroutine C<afterinit>, that function is called after debugger
774d564b 1006initialization ends. F<.perldb> may be contained in the current
055fd3a9
GS
1007directory, or in the home directory. Because this file is sourced
1008in by Perl and may contain arbitrary commands, for security reasons,
1009it must be owned by the superuser or the current user, and writable
1010by no one but its owner.
36477c24 1011
bea98532
JH
1012You can mock TTY input to debugger by adding arbitrary commands to
1013@DB::typeahead. For example, your F<.perldb> file might contain:
1014
1015 sub afterinit { push @DB::typeahead, "b 4", "b 6"; }
1016
1017Which would attempt to set breakpoints on lines 4 and 6 immediately
d7f8936a 1018after debugger initialization. Note that @DB::typeahead is not a supported
bea98532
JH
1019interface and is subject to change in future releases.
1020
055fd3a9
GS
1021If you want to modify the debugger, copy F<perl5db.pl> from the
1022Perl library to another name and hack it to your heart's content.
1023You'll then want to set your C<PERL5DB> environment variable to say
1024something like this:
36477c24 1025
1026 BEGIN { require "myperl5db.pl" }
1027
055fd3a9
GS
1028As a last resort, you could also use C<PERL5DB> to customize the debugger
1029by directly setting internal variables or calling debugger functions.
1030
1031Note that any variables and functions that are not documented in
1032this document (or in L<perldebguts>) are considered for internal
1033use only, and as such are subject to change without notice.
36477c24 1034
4e1d3b43 1035=head2 Readline Support
1036
055fd3a9 1037As shipped, the only command-line history supplied is a simplistic one
4e1d3b43 1038that checks for leading exclamation points. However, if you install
1039the Term::ReadKey and Term::ReadLine modules from CPAN, you will
1040have full editing capabilities much like GNU I<readline>(3) provides.
1041Look for these in the F<modules/by-module/Term> directory on CPAN.
055fd3a9 1042These do not support normal B<vi> command-line editing, however.
4e1d3b43 1043
055fd3a9 1044A rudimentary command-line completion is also available.
e7ea3e70
IZ
1045Unfortunately, the names of lexical variables are not available for
1046completion.
1047
4e1d3b43 1048=head2 Editor Support for Debugging
1049
055fd3a9
GS
1050If you have the FSF's version of B<emacs> installed on your system,
1051it can interact with the Perl debugger to provide an integrated
1052software development environment reminiscent of its interactions
1053with C debuggers.
4e1d3b43 1054
055fd3a9
GS
1055Perl comes with a start file for making B<emacs> act like a
1056syntax-directed editor that understands (some of) Perl's syntax.
1057Look in the I<emacs> directory of the Perl source distribution.
4e1d3b43 1058
055fd3a9
GS
1059A similar setup by Tom Christiansen for interacting with any
1060vendor-shipped B<vi> and the X11 window system is also available.
1061This works similarly to the integrated multiwindow support that
1062B<emacs> provides, where the debugger drives the editor. At the
1063time of this writing, however, that tool's eventual location in the
1064Perl distribution was uncertain.
4e1d3b43 1065
055fd3a9 1066Users of B<vi> should also look into B<vim> and B<gvim>, the mousey
2e8f3c35 1067and windy version, for coloring of Perl keywords.
a0d0e21e 1068
055fd3a9
GS
1069Note that only perl can truly parse Perl, so all such CASE tools
1070fall somewhat short of the mark, especially if you don't program
1071your Perl as a C programmer might.
e7ea3e70 1072
055fd3a9 1073=head2 The Perl Profiler
d74e8afc 1074X<profile> X<profiling> X<profiler>
e7ea3e70 1075
055fd3a9
GS
1076If you wish to supply an alternative debugger for Perl to run, just
1077invoke your script with a colon and a package argument given to the
1078B<-d> flag. The most popular alternative debuggers for Perl is the
1079Perl profiler. Devel::DProf is now included with the standard Perl
1080distribution. To profile your Perl program in the file F<mycode.pl>,
1081just type:
36477c24 1082
055fd3a9 1083 $ perl -d:DProf mycode.pl
36477c24 1084
055fd3a9
GS
1085When the script terminates the profiler will dump the profile
1086information to a file called F<tmon.out>. A tool like B<dprofpp>,
1087also supplied with the standard Perl distribution, can be used to
1088interpret the information in that profile.
36477c24 1089
055fd3a9 1090=head1 Debugging regular expressions
d74e8afc
ITB
1091X<regular expression, debugging>
1092X<regex, debugging> X<regexp, debugging>
36477c24 1093
3d555cb8
WL
1094C<use re 'debug'> enables you to see the gory details of how the Perl
1095regular expression engine works. In order to understand this typically
1096voluminous output, one must not only have some idea about how regular
1097expression matching works in general, but also know how Perl's regular
1098expressions are internally compiled into an automaton. These matters
1099are explored in some detail in
055fd3a9 1100L<perldebguts/"Debugging regular expressions">.
36477c24 1101
055fd3a9 1102=head1 Debugging memory usage
d74e8afc 1103X<memory usage>
36477c24 1104
055fd3a9
GS
1105Perl contains internal support for reporting its own memory usage,
1106but this is a fairly advanced concept that requires some understanding
1107of how memory allocation works.
1108See L<perldebguts/"Debugging Perl memory usage"> for the details.
36477c24 1109
055fd3a9 1110=head1 SEE ALSO
a0d0e21e
LW
1111
1112You did try the B<-w> switch, didn't you?
1113
f6b3c421 1114L<perldebtut>,
055fd3a9
GS
1115L<perldebguts>,
1116L<re>,
1117L<DB>,
fe854a6f 1118L<Devel::DProf>,
055fd3a9
GS
1119L<dprofpp>,
1120L<Dumpvalue>,
1121and
1122L<perlrun>.
a0d0e21e 1123
fa3aa65a
JC
1124When debugging a script that uses #! and is thus normally found in
1125$PATH, the -S option causes perl to search $PATH for it, so you don't
66a1b24b 1126have to type the path or C<which $scriptname>.
fa3aa65a
JC
1127
1128 $ perl -Sd foo.pl
1129
055fd3a9
GS
1130=head1 BUGS
1131
1132You cannot get stack frame information or in any fashion debug functions
1133that were not compiled by Perl, such as those from C or C++ extensions.
a0d0e21e 1134
c997b287 1135If you alter your @_ arguments in a subroutine (such as with C<shift>
6edf2346 1136or C<pop>), the stack backtrace will not show the original values.
c997b287
GS
1137
1138The debugger does not currently work in conjunction with the B<-W>
1139command-line switch, because it itself is not free of warnings.
4c82ae22
GS
1140
1141If you're in a slow syscall (like C<wait>ing, C<accept>ing, or C<read>ing
1142from your keyboard or a socket) and haven't set up your own C<$SIG{INT}>
1143handler, then you won't be able to CTRL-C your way back to the debugger,
1144because the debugger's own C<$SIG{INT}> handler doesn't understand that
1145it needs to raise an exception to longjmp(3) out of slow syscalls.