
trace_exit_port

   Create an exit-port for the current procedure box.

Type
   Debugging

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
   trace_exit_port is det

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
