Traveling Commands Sensitive to Spypoints
The basic traveling commands listed above all ignore spypoints; the
following commands take advantage of spypoints.
- Causes the debugger to resume running your program,
stopping only when the next spypoint is reached, or when the program
terminates. Leaping can be used to follow the program's execution at a
higher level than exhaustive tracing through creeping. This is done by
setting spypoints on a set of pertinent procedures or calls, then
following the control flow through these by leaping from one to the
- Causes the debugger to resume running
your program, stopping when the next spypoint is reached. It also
ensures that the debugger will stop at the current invocation's Done,
Exit, Fail, or Exception port, when one is reached. Thus
quasi-skip is a combination of leaping and skipping. You may use it to
travel to the next spypoint while also marking a place to stop when
execution returns there.
- Is just like leap, except that the
debugger does not keep any debugging information while looking for a
spypoint, so it runs at nearly full compiled speed. It does mean that
the debugger will be unable to show you the ancestors between the
invocation you zipped from and the invocation you stopped at.
Zipping gives up some information in exchange for greatly increased
speed. This is not always desirable, but sometimes is very helpful.
A good use for zipping might be to run through a time-consuming initial
part of a computation that is known to work properly, and stop at the
beginning of a part that has a bug. From that point, you might use
leaping, creeping, and skipping to locate the bug.