Chapter 70. Debugging Perl Programs with -D
Chip Salzenberg
Easy debugging of Perl programs has been a standard feature of Perl for a very long time. There’s the -w
flag which warns you about potential errors, and for more serious bug hunting, there’s the Perl debugger. Perl’s debugger—written in Perl!—is invoked with the -d
flag.
This article is not about the -d
flag.
This article is about something much more wizardly: the -D
flag. This flag is your gateway to a set of debugging behaviors inside Perl’s guts. If you’re up against a tough bug and you can’t figure out where it’s coming from, -D
may be just what the sergeant ordered.
Not all Perl binaries let you use the -D
flag. The code to support it makes the Perl binary a bit larger and slows down execution just a hair. Since Larry is loathe to enlarge or slow Perl, the binary includes support for -D
only if it was explicitly compiled with the -DDEBUGGING
option, which is turned off by default.
You can tell whether your Perl was compiled with -DDEBUGGING
by examining the output of perl -V
. The last section of perl -V
output is “Characteristics of this binary”. If you have a fairly recent version of Perl, then the first line in that section will be “Compile-time options”; if that line includes the word DEBUGGING
, then your Perl supports -D
.
What -D Does for You
Perl is too complex and juggles too many eggs to have just one debugging flag. And in fact -D
isn’t really just one flag. Rather, it’s a prefix that lets you turn on multiple debugging ...
Get Computer Science & Perl Programming 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.