byte-order modifiers for (un)pack templates
[p5sagit/p5-mst-13.2.git] / pod / perldebug.pod
index 5d0ef3f..e44eaaf 100644 (file)
@@ -39,6 +39,12 @@ Any command not recognized by the debugger is directly executed
 (C<eval>'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<eval> 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<print> 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<print> function in Perl.  When dumping
+hashes, you'll probably prefer 'x \%h' rather than 'x %h'.
 See L<Dumpvalue> 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<x> command on each applicable var.
 
 Same as C<V currentpackage [vars]>.
 
+=item y [level [vars]]
+
+Display all (or some) lexical variables (mnemonic: C<mY> variables)
+in the current scope or I<level> scopes higher.  You can limit the
+variables that you see with I<vars> which works exactly as it does
+for the C<V> and C<X> commands.  Requires the C<PadWalker> module
+version 0.08 or higher; will warn if this isn't installed.  Output
+is pretty-printed in the same style as for C<V> 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<WARNING> If C<command> 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<WARNING> If C<command> 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<WARNING> If C<command> 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<do { ... }>.
 
+=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<file>.  I<file> may itself contain
-C<@> commands.
+Read and execute debugger commands from I<file>.
+I<file> may itself contain C<source> commands.
 
 =item H -number
 
@@ -674,7 +700,7 @@ This module should implement a method named C<new> that returns an object
 with two methods: C<IN> and C<OUT>.  These should return filehandles to use
 for debugging input and output correspondingly.  The C<new> 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<perl5db.pl> from the
 Perl library to another name and hack it to your heart's content.
 You'll then want to set your C<PERL5DB> environment variable to say