Traditional Debugging
Expect offers a debugging mechanism that is similar to traditional source-level debuggers such as dbx and gdb. From now on, I will call it the debugger. This particular debugger is just one of several that are available as separate extensions to Tcl. Read the Tcl FAQ to learn about other Tcl debuggers.
The debugger can be started with the command "debug 1" or by starting Expect itself with the command-line flag "-D“. The -D flag is just shorthand for a form of the debug command, so I will talk about debug first.
The debug command can be used to start or stop the debugger. With an argument of 1, the debugger is started. It is stopped with an argument of 0.
debug 1
When the debugger starts running, it prints the next command to be executed and then prompts you for what to do next. At this point you can do things like single-step the script, set breakpoints, or continue the script. You can also enter any Expect or Tcl commands as well.
The following Tcl commands illustrate that the debugger evaluates Tcl commands as usual.
dbg2.1>set m {a b c}a b c dbg2.2>llength $m3
The debugger interaction looks a lot like that of the Expect interpreter command. As with the interpreter command, the second number of the prompt is the Tcl history identifier. The first number is the depth of the evaluation stack. In the context of a script, the initial depth of the evaluation stack is 1 but the debugger always introduces a new level to the stack. So the debugger prompts are always ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access