Contents / Previous / Next


Debugging

If you invoke Perl with a -d switch, your script will be run under a debugging monitor. It will halt before the first executable statement and ask you for a command, such as:

h
Prints out a help message.

T
Stack trace.

s
Single step. Executes until it reaches the beginning of another statement.

n
Next. Executes over subroutine calls, until it reaches the beginning of the next statement.

f
Finish. Executes statements until it has finished the current subroutine.

c
Continue. Executes until the next breakpoint is reached.

c line
Continue to the specified line. Inserts a one-time-only breakpoint at the specified line.

<CR>
Repeat last n or s.

l min+incr
List incr+1 lines starting at min. If min is omitted, starts where last listing left off. If incr is omitted, previous value of incr is used.

l min-max
List lines in the indicated range.

l line
List just the indicated line.

l
List next window.

-
List previous window.

w line
List window around line.

l subname
List subroutine. If it's a long subroutine it just lists the beginning. Use "l" to list more.

/pattern/
Regular expression search forward for pattern; the final / is optional.

?pattern?
Regular expression search backward for pattern; the final ? is optional.

L
List lines that have breakpoints or actions.

S
Lists the names of all subroutines.

t
Toggle trace mode on or off.

b line condition
Set a breakpoint. If line is omitted, sets a breakpoint on the line that is about to be executed. If a condition is specified, it is evaluated each time the statement is reached and a breakpoint is taken only if the condition is true. Breakpoints may only be set on lines that begin an executable statement.

b subname condition
Set breakpoint at first executable line of subroutine.

<dt>d line

Delete breakpoint. If line is omitted, deletes the breakpoint on the line that is about to be executed.

D
Delete all breakpoints.

a line command
Set an action for line. A multi-line command may be entered by backslashing the newlines.

A
Delete all line actions.

< command
Set an action to happen before every debugger prompt. A multi-line command may be entered by backslashing the newlines.

> command
Set an action to happen after the prompt when you've just given a command to return to executing the script. A multi-line command may be entered by backslashing the newlines.

V package
List all variables in package. Default is main package.

! number
Redo a debugging command. If number is omitted, redoes the previous command.

! -number
Redo the command that was that many commands ago.

H -number
Display last n commands. Only commands longer than one character are listed. If number is omitted, lists them all.

q or ^D
Quit.

command
Execute command as a perl statement. A missing semicolon will be supplied.

p expr
Same as "print DB'OUT expr". The DB'OUT filehandle is opened to /dev/tty, regardless of where STDOUT may be redirected to.