200 likes | 413 Views
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:
E N D
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 forgetperldeb • Inside the debugger: h horh [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 ™ • q – Quits the debugger
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/