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