Debugger Command Overview And Philosophy

The debugger commands are:

Name

Description

s

step into procedure

n, N

step over procedure

r

return from procedure

b

set, clear, or show breakpoint

c

continue

w

show stack

u

move scope up

d

move scope down

h

help

\r

repeat last action

The debugger commands are all one letter.[62] This is partly for convenience. Since the debugger is purely an interactive application, commands should be easy to enter. Also, scripts rarely use one-letter commands, so the chances of name conflicts between the debugger and scripted applications is very low.

The command names are very similar and, in some cases, identical to other popular debuggers (e.g., gdb, dbx). Existing Tcl procedures are directly usable, so there are no new commands, for example, to print variables since Tcl already provides such commands (e.g., set, puts, parray).

For the purposes of describing the debugger commands, I will use a script called debug-test.exp. It is shown below. The script does not do anything particularly useful. It merely serves to illustrate how the debugger is used.

set b 1

proc p4 {x} {
    return [
        expr 5+[expr 1+$x]]
}

set z [
   expr 1+[expr 2+[p4 $b]]
]

proc p3 {} {
    set m 0
}

proc p2 {} {
    set c 4
    p3
    set d 5
}

proc p1 {} {
    set a 2
    p2
    set a 3
    set a 5
}

p1
set k 7
p1

If the debugger is started at the beginning of the script, no commands have been executed. Tcl and Expect commands have global scope.

% expect -D 1 debug-test.exp
1: set b 1
dbg2.1>

When a new command is about to be executed, the debugger ...

Get Exploring Expect now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.