Port denotes the reason to activate the tracer (`port' in the 4/5-port, but with some additions:
redoport signals resuming a predicate to generate alternative solutions.
retry. Except is the pending exception-term.
breakinstruction is executed. PC is program counter. This port is used by the graphical debugger.
cut_call(PC)for more information.
Frame is a reference to the current local stack frame,
which can be examined using prolog_frame_attribute/3. Choice
is a reference to the last choice-point and can be examined using
should be unified with one of the atoms
retry (retry the current goal) or
(force the current goal to fail). Leaving it a variable is identical to
Together with the predicates described in section 4.38 and the other predicates of this chapter this predicate enables the Prolog user to define a complete new debugger in Prolog. Besides this it enables the Prolog programmer monitor the execution of a program. The example below records all goals trapped by the tracer in the database.
prolog_trace_interception(Port, Frame, _PC, continue) :- prolog_frame_attribute(Frame, goal, Goal), prolog_frame_attribute(Frame, level, Level), recordz(trace, trace(Port, Level, Goal)).
To trace the execution of `go' this way the following query should be given:
?- trace, go, notrace.
very_deep(meaning don't skip). The `skip level' is a global variable of the Prolog system that disables the debugger on all recursion levels deeper than the level of the variable. Used to implement the trace options `skip' (sets skip level to the level of the frame) and `up' (sets skip level to the level of the parent frame (i.e., the level of this frame minus 1).