These tests can only be used inside the debugger and only when focused
on the current invocation. If they appear in
execution_state/1 called from outside the debugger, then an
exception will be raised.
The notion of port in breakpoint handling is more general than outlined earlier in Procedure Box. Here, the following terms are used to describe a port:
call, exit(nondet), exit(det), redo, fail, exception(Exception), block, unblock
Furthermore, the atoms
exception can be
used in the
port condition (see below), to denote either of the two
exit ports and an arbitrary exception port, respectively.
The current execution port matches Port in the following
sense: either Port and the current port unify, or
Port is the functor of the current port (e.g.
port(exit) holds for both
As explained earlier, the port condition for a non Call port is best placed in the action part. This is because the failure of the action part will cause the debugger to pass through the Call port silently, and to build a procedure box, even in zip mode. The following idiom is suggested for creating breakpoints at non Call ports:
The breakpoint being examined has a breakpoint identifier
BID. (BID =
off if no breakpoint was
Mode is the value of the
mode variable, which normally
reflects the current debugger mode.
Command is the value of the
command variable, which is the
command to be executed by default, if the breakpoint is selected.
Show is the value of the
show variable, i.e. the default
show method (the method for displaying the goal in the trace message).
The last three of the above tests access the debugger action
variables. These breakpoint conditions have a different meaning
in the action part. For example, the condition
mode(trace), if it
occurs in the tests, checks if the current debugger mode is
trace. On the other hand, if the same term occurs within
the action part, then it sets the debugger mode to
To support the querying of the action variables in the action part, the following breakpoint condition is provided:
Equivalent to ActVar, where this is an action variable test,
i.e. one of the terms
show(Show). It has this
meaning in the action part as well.
conditions, the condition can be replaced by its argument, if that
is not a variable. For example the condition
call can be
used instead of
port(call). Conditions matching the terms
listed above as valid port values will be converted to a
port condition. Similarly, any valid value for the three debugger
action variables is converted to an appropriate condition. These valid
values are described in Action Variables.