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