The purpose of leashing is to allow you to speed up single-stepping (creeping) through a program by telling the debugger that it does not always need to wait for user interaction at every port.

The leashing mode only applies to procedures that do not have spypoints on them, and it determines which ports of such procedures are leashed. By default, all ports are leashed. On arrival at a leashed port, the debugger will stop to allow you to look at the execution state and decide what to do next. At unleashed ports, the goal is displayed but program execution does not stop to allow user interaction.

At any time, there is a leashing mode in force, which determines at which of the seven ports of a procedure box (Call, Exit, Redo, Fail, Done, Head, and Exception) the debugger will stop and wait for a command. By default, the debugger will stop at every port, but sometimes you may wish to reduce the number of times you have to issue commands. For example, it is often convenient only to have to interact at the Call, Redo, and Exception ports.

To set the leashing mode, that is, to specify ports for leashing, call leash/1. The leashing mode can also be set from the options menu of the source linked debugger (see dbg-sld).

Please note: Spypoints are not affected by leashing; the debugger will always stop at every port for a procedure or call on which there is a spypoint.