The Perl Debugger

Issac Goldstand

isaac@cpan.org

Mirimar Networks

http://www.mirimar.net/

Credits / For more info

Based loosely on perldebtut

Also, don’t forget perldeb

Inside the debugger: h h or h [cmd]

Before we even get to the debugger…

Have you:

Turned on warnings via use warnings or perl –w?

Do you use strict wherever possible?

Does your script pass syntax checking (perl –c)?

Example 1 – Hello World

#!/usr/bin/perl

$var1 = ’Hello, world!’;

$var2 = “$varl\n”;

print $var2;

When not to use the debugger

Not every case needs the debugger

The debugger would not have provided any significant help with the previous example

It is important to use other tools to find problems

What to use?

perl5db.pl – The command line debugger

GUI debugger – ptkdb

ActiveState – PDK, Komodo

Starting the debugger

Called by perl –d

Can be command line option: perl –d myscript.pl

…or part of the shebang line: #!/usr/bin/perl -d

The MOST IMPORTANT COMMAND ™

The MOST IMPORTANT COMMAND ™

q – Quits the debugger

The SECOND MOST IMPORTANT COMMAND™

The SECOND MOST IMPORTANT COMMAND™

h – Displays help

The text debugger

Other common commands:

v [line] – View around line (current line by default)

x expr – Evaluates an expression (in list context)

m expr – Shows methods that expr->can do

s – Step into

n – Step over

c line – Set a “one time” breakpoint

Working with variables & symbols

M shows currently loaded modules + versions

S shows currently available subroutines

X / V shows variables in [current] package

Looking around

v – Shows a “block” of code, starting from current position

l – shows a single line of code, starting from current position

Either command takes an optional parameter of a line number

. resets the line position to the current line

Practical use

Normal “command line” scripts

CGI scripts via –debug pragma or command arguments

mod_perl via Apache::DB

Not helpful for XSUB debugging

GUIs

ptkdb

IDEs

ActiveState PDK

I’ve personally found the PDK to be very weak (while somewhat simpler to navigate, set breakpoints, etc)

Komodo

ActiveState’s opensource-language IDE

Costs $$$

New version 3.0 just released with very complete GUI debug tools

Includes supports for watches, conditional breakpoints, immediate pane, etc

Includes support for simulating full CGI environment

The End

Issac Goldstand

<isaac@cpan.org>

Mirimar Networks

http://www.mirimar.net/

The Perl Debugger

Issac Goldstand

2004-07-18T23:13:44