Chapter 20. The Perl Debugger
First of all, have you tried the use warnings
pragma?
If you invoke Perl with the -d
switch, your program will be run inside the Perl debugger. This works
like an interactive Perl environment, prompting for debugger commands
that let you examine source code, set breakpoints, dump out your
function-call stack, change the values of variables, and so on. Any
command not recognized by the debugger is directly executed (using
eval
) as Perl code in the package of the code
currently being debugged. (The debugger uses the DB
package for its own state information, to avoid trampling yours.) This
is so wonderfully convenient that people often fire up the debugger just
to test out Perl constructs interactively. In that case, it doesn't
matter what program you tell Perl to debug, so we'll choose one without
much meaning:
%
perl -de 42
In Perl, the debugger is not a program completely separate from
the one being debugged, the way it usually is in a typical programming
environment. Instead, the -d
flag tells the
compiler to insert source information into the parse trees it's about to
hand off to the interpreter. That means your code must first compile
correctly for the debugger to work on it. If that is successful, the
intrepreter preloads a special Perl library file containing the debugger
itself.
%
perl -d /path/to/program
The program will halt immediately before the first run-time executable statement (but see Section 20.1 regarding compile-time statements) ...
Get Programming Perl, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.