[Chapter 6] 6.4 Customizing the Debugger
Author: Ellen Siever, Stephen Spainhour & Nathan Patwardhan
Date: 1999-07-02T01:40:21Z

#

| Chapter 6 Debugging |

## 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<">)`.

`TTY`

  The TTY to use for debugging I/O.

`noTTY`

  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.

`ReadLine`

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

`NonStop`

  If true, no interaction is performed until an interrupt.

`LineInfo`

  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.

6.3 Using the Debugger |  | 6.5 The Perl Profiler