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