Next: Jumping, Previous: Instrumenting, Up: Edebug [Contents][Index]
Edebug supports several execution modes for running the program you are debugging. We call these alternatives Edebug execution modes; do not confuse them with major or minor modes. The current Edebug execution mode determines how Edebug displays the progress of the evaluation, whether it stops at each stop point, or continues to the next breakpoint, for example.
Normally, you specify the Edebug execution mode by typing a command to continue the program in a certain mode. Here is a table of these commands. All except for S resume execution of the program, at least for a certain distance.
Stop: don’t execute any more of the program for now, just wait for more
Edebug commands (edebug-stop
).
Step: stop at the next stop point encountered (edebug-step-mode
).
Next: stop at the next stop point encountered after an expression
(edebug-next-mode
). Also see edebug-forward-sexp
in
Edebug Misc.
Trace: pause one second at each Edebug stop point (edebug-trace-mode
).
Rapid trace: update at each stop point, but don’t actually
pause (edebug-Trace-fast-mode
).
Go: run until the next breakpoint (edebug-go-mode
). See Breakpoints.
Continue: pause for one second at each breakpoint, but don’t stop
(edebug-continue-mode
).
Rapid continue: update at each breakpoint, but don’t actually pause
(edebug-Continue-fast-mode
).
Go non-stop: ignore breakpoints (edebug-Go-nonstop-mode
). You
can still stop the program by hitting any key.
In general, the execution modes earlier in the above list run the program more slowly or stop sooner.
When you enter a new Edebug level, the initial execution mode comes from
the value of the variable edebug-initial-mode
. By default, this
specifies step
mode. Note that you may reenter the same Edebug
level several times if, for example, an instrumented function is called
several times from one command.
While executing or tracing, you can interrupt the execution by typing any Edebug command. Edebug stops the program at the next stop point and then executes the command that you typed. For example, typing t during execution switches to trace mode at the next stop point. You can use S to stop execution without doing anything else.
If your function happens to read input, a character you hit intending to interrupt execution may be read by the function instead. You can avoid such unintended results by paying attention to when your program wants input.
Keyboard macros containing Edebug commands do not work; when you exit
from Edebug, to resume the program, whether you are defining or
executing a keyboard macro is forgotten. Also, defining or executing a
keyboard macro outside of Edebug does not affect the command loop inside
Edebug. This is usually an advantage. But see
edebug-continue-kbd-macro
.
Next: Jumping, Previous: Instrumenting, Up: Edebug [Contents][Index]