I’ve been using the perl debugger a lot more recently and I figure it’s worth noting down a few of the things I’m doing when using it.
The first thing to do is to make sure ReadLine is installed. A cpanm Term::ReadLine::Perl Term::ReadKey sorts that out. That makes command history work as you’d expect which makes it much more useful.
Then to insert a breakpoint in my code I add a line,
$DB::single = 1;
I then start the debugger up using PERLDB_OPTS=NonStop to make it run the program until a break point is hit.
If I get automatic breakpoints because of the recursion auto breakpoint '100 levels deep in subroutine calls!' then I tweak $DB::deep. This can be done simply by doing a $DB::deep = 1000 on the debugger command line. Then I can simply restart the debugger using c.
The c command is a really useful one. You can continue to a line in code so you can skip to the bit of code you are interested in really simply. Then you just navigate as usual using n and s.
When outputting the contents of a complex object it’s worth knowing that you can limit the number of levels the dump expands out. You do this by simply putting a number after the x and before the variable name, i.e. x 2 $var. 2 seems to be a good number to start with while you try to figure out where the information you want is.
The references for the debugger are,

