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