home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  

6.4 Customizing the Debugger

You can do some customizing by setting up a .perldb file with initialization code. When it starts up, the debugger reads and processes this file. For instance, you can set up aliases like these:

$DB::alias{'len'}  = 's/^len(.*)/p length($1)/';
$DB::alias{'stop'} = 's/^stop (at|in)/b/';
$DB::alias{'ps'}   = 's/^ps\b/p scalar /';
$DB::alias{'quit'} = 's/^quit\b.*/exit/';
You can also use this file to set options and to define a subroutine, &afterinit , to be executed after the debugger is initialized.

After the configuration file has been processed, the debugger consults the environment variable PERLDB_OPTS and parses its contents as arguments to the O opt=val debugger command.

While any options can be set in PERLDB_OPTS, the following options can only be specified at startup. If you want to set them in your configuration file, call &parse_options(<">opt=val<">) .


The TTY to use for debugging I/O.


If set, goes in NonStop mode. On an interrupt, if TTY is not set, it uses the value of noTTY or /tmp/perldbtty$$ to find the TTY using Term::Rendezvous. The current variant is to have the name of the TTY in this file.


If false, a dummy ReadLine is used so that you can debug ReadLine applications.


If true, no interaction is performed until an interrupt.


File or pipe to print line number information to. If it's a pipe, then a short, emacs -like message is used.

For example, if you create the following .perldb file:

&parse_options("NonStop=1 LineInfo=db.out");
sub afterinit { $trace = 1; }
your script will run without human intervention, putting trace information into the file db.out .