(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
=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
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.
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
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
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.
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
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.
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