X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldebug.pod;h=e44eaafdcb03e2f9c5d15a866ac4f1394f2d4488;hb=1109a39207d99bf49cb02471368620d4a38731b2;hp=5d0ef3f54d0a51f33da38ba1dea9fbc593b30436;hpb=492652be590915fcb2621eeceaf000a1c070956a;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldebug.pod b/pod/perldebug.pod index 5d0ef3f..e44eaaf 100644 --- a/pod/perldebug.pod +++ b/pod/perldebug.pod @@ -39,6 +39,12 @@ Any command not recognized by the debugger is directly executed (C'd) as Perl code in the current package. (The debugger uses the DB package for keeping its own state information.) +Note that the said C is bound by an implicit scope. As a +result any newly introduced lexical variable or any modified +capture buffer content is lost after the eval. The debugger is a +nice environment to learn Perl, but if you interactively experiment using +material which should be in the same scope, stuff it in one line. + For any text entered at the debugger prompt, leading and trailing whitespace is first stripped before further processing. If a debugger command coincides with some function in your own program, merely precede the @@ -84,9 +90,10 @@ where STDOUT may be redirected to. =item x [maxdepth] expr -Evaluates its expression in list context and dumps out the result -in a pretty-printed fashion. Nested data structures are printed out -recursively, unlike the real C function in Perl. +Evaluates its expression in list context and dumps out the result in a +pretty-printed fashion. Nested data structures are printed out +recursively, unlike the real C function in Perl. When dumping +hashes, you'll probably prefer 'x \%h' rather than 'x %h'. See L if you'd like to do this yourself. The output format is governed by multiple options described under @@ -114,6 +121,16 @@ This is similar to calling the C command on each applicable var. Same as C. +=item y [level [vars]] + +Display all (or some) lexical variables (mnemonic: C variables) +in the current scope or I scopes higher. You can limit the +variables that you see with I which works exactly as it does +for the C and C commands. Requires the C module +version 0.08 or higher; will warn if this isn't installed. Output +is pretty-printed in the same style as for C and the format is +controlled by the same options. + =item T Produce a stack backtrace. See below for details on its output. @@ -340,7 +357,10 @@ List out all pre-prompt Perl command actions. Set an action (Perl command) to happen before every debugger prompt. A multi-line command may be entered by backslashing the newlines. -B If C is missing, all actions are wiped out! + +=item < * + +Delete all pre-prompt Perl command actions. =item << command @@ -356,8 +376,11 @@ List out post-prompt Perl command actions. Set an action (Perl command) to happen after the prompt when you've just given a command to return to executing the script. A multi-line command may be entered by backslashing the newlines (we bet you -couldn't've guessed this by now). B If C is -missing, all actions are wiped out! +couldn't've guessed this by now). + +=item > * + +Delete all post-prompt Perl command actions. =item >> command @@ -373,13 +396,16 @@ List out pre-prompt debugger commands. Set an action (debugger command) to happen before every debugger prompt. A multi-line command may be entered in the customary fashion. -B If C is missing, all actions are wiped out! Because this command is in some senses new, a warning is issued if you appear to have accidentally entered a block instead. If that's what you mean to do, write it as with C<;{ ... }> or even C. +=item { * + +Delete all pre-prompt debugger commands. + =item {{ command Add an action (debugger command) to happen before every debugger prompt. @@ -406,10 +432,10 @@ their C<$ENV{SHELL}> variable) will be used, which can interfere with proper interpretation of exit status or signal and coredump information. -=item @ file +=item source file -Read and execute debugger commands from I. I may itself contain -C<@> commands. +Read and execute debugger commands from I. +I may itself contain C commands. =item H -number @@ -674,7 +700,7 @@ This module should implement a method named C that returns an object with two methods: C and C. These should return filehandles to use for debugging input and output correspondingly. The C method should inspect an argument containing the value of C<$ENV{PERLDB_NOTTY}> at -startup, or C<"/tmp/perldbtty$$"> otherwise. This file is not +startup, or C<".perldbtty$$"> otherwise. This file is not inspected for proper ownership, so security hazards are theoretically possible. @@ -880,6 +906,15 @@ in by Perl and may contain arbitrary commands, for security reasons, it must be owned by the superuser or the current user, and writable by no one but its owner. +You can mock TTY input to debugger by adding arbitrary commands to +@DB::typeahead. For example, your F<.perldb> file might contain: + + sub afterinit { push @DB::typeahead, "b 4", "b 6"; } + +Which would attempt to set breakpoints on lines 4 and 6 immediately +after debugger initilization. Note that @DB::typeahead is not a supported +interface and is subject to change in future releases. + If you want to modify the debugger, copy F from the Perl library to another name and hack it to your heart's content. You'll then want to set your C environment variable to say