X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperldebug.pod;h=ee9fa97d1c70fd3184bb3a5459b2fad067760b44;hb=56da5a46eac515b5a165aaf05cb06f7bcdfd8e67;hp=45c2420472b660491b4a7303b1e308ee665358c2;hpb=a7b657eec5c9a956f5411ffb5c1dacbd8d5b6c1b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perldebug.pod b/pod/perldebug.pod index 45c2420..ee9fa97 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 @@ -350,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 @@ -366,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 @@ -383,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. @@ -416,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 @@ -890,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