[ Debugging | Reference Manual | Alphabetic Index ]
trace_exit_port
Create an exit-port for the current procedure box.
Description
This predicate allows to generate a user-defined debugger port,
thus enhancing the debugger's basic box model with application-
specific checkpoints. In the box model, the execution is viewed as
consisting of nested boxes, which are being entered via CALL or
REDO ports, and left via EXIT, FAIL or LEAVE ports.
When the debugger is on, this predicate causes the current innermost
box to be exited. This should be a box created previously by the
trace_call_port/3 builtin, otherwise the debugger's box
nesting will get out of sync.
Modes and Determinism
Examples
search(Vars) :-
trace_call_port(search_enter, _Invoc, search(Vars)),
labeling(Vars),
trace_exit_port.
?- length(L, 3), L :: 1..4, search(L).
(1) 1 CALL length(L, 3) %> zap to port: [~ call] search_enter
(6) 2 SEARCH_ENTER search([_501{[... .. ...]}, _514{[...]}, _527{...}]) %> skip
(6) 2 *EXIT search([1, 1, 1]) %> skip
See Also
trace_call_port / 3, trace_point_port / 3, trace_parent_port / 1, spy_term / 2, spy_var / 1, trace / 1