next up previous contents index
Next: Obtaining Runtime Statistics Up: Built-in predicates Previous: Creating a Protocol of   Contents   Index


Debugging and Tracing Programs

trace0 Start the tracer. trace0 itself cannot be seen in the tracer. Note that the Prolog toplevel treats trace0 special; it means `trace the next goal'. tracing0 Succeeds when the tracer is currently switched on. tracing0 itself can not be seen in the tracer. notrace0 Stop the tracer. notrace0 itself cannot be seen in the tracer. trace1+Pred Equivalent to trace(Pred, +all). trace2+Pred, +Ports Put a trace-point on all predicates satisfying the predicate specification Pred. Ports is a list of portnames (call, redo, exit, fail). The atom all refers to all ports. If the port is preceded by a sign the trace-point is cleared for the port. If it is preceded by a the trace-point is set.

The predicate trace2 activates debug mode (see debug0). Each time a port (of the 4-port model) is passed that has a trace-point set the goal is printed as with trace0. Unlike trace0 however, the execution is continued without asking for further information. Examples:

?- trace(hello). Trace all ports of hello with any arity in any module.
?- trace(foo/2, +fail). Trace failures of foo/2 in any module.
?- trace(bar/1, -all). Stop tracing bar/1.

The predicate debugging0 shows all currently defined trace-points. notrace1+Goal Call Goal, but suspend the debugger while Goal is executing. The current implementation cuts the choicepoints of Goal after successful completion. See once1. Later implementations may have the same semantics as call1. debug0 Start debugger. In debug mode, Prolog stops at spy- and trace-points, disables tail-recursion optimisation and aggressive destruction of choice-points to make debugging information accessible. Implemented by the Prolog flag debug. nodebug0 Stop debugger. Implementated by the prolog flag debug. See also debug0. debugging0 Print debug status and spy points on current output stream. See also the prolog flag debug. spy1+Pred Put a spy point on all predicates meeting the predicate specification Pred. See listing. nospy1+Pred Remove spy point from all predicates meeting the predicate specification Pred. nospyall0 Remove all spy points from the entire program. leash1?Ports Set/query leashing (ports which allow for user interaction). Ports is one of +Name, -Name, ?Name or a list of these. +Name enables leashing on that port, -Name disables it and ?Name succeeds or fails according to the current setting. Recognised ports are: call, redo, exit, fail and unify. The special shorthand all refers to all ports, full refers to all ports except for the unify port (default). half refers to the call, redo and fail port. visible1+Ports Set the ports shown by the debugger. See leash1 for a description of the port specification. Default is full. unknown2-Old, +New Edinburgh-prolog compatibility predicate, interfacing to the ISO prolog flag unknown. Values are trace (meaning error) and fail. If the unknown flag is set to warning, unknown2 reports the value as trace. style_check1+Spec Set style checking options. Spec is either +option, -option, ?option or a list of such options. +option sets a style checking option, -option clears it and ?option succeeds or fails according to the current setting. consult1 and derivatives resets the style checking options to their value before loading the file. If--for example--a file containing long atoms should be loaded the user can start the file with:
\begin{code}
:- style_check(-atom).
\end{code}

Currently available options are:

Name Default Description
singleton on read_clause1 (used by consult1) warns on variables only appearing once in a term (clause) which have a name not starting with an underscore.
atom on read1 and derivatives will produce an error message on quoted atoms or strings longer than 5 lines.
dollar off Accept dollar as a lower case character, thus avoiding the need for quoting atoms with dollar signs. System maintenance use only.
discontiguous on Warn if the clauses for a predicate are not together in the same source file.
string off Backward compatibility. See the prolog-flag double_quotes (current_prolog_flag2).


next up previous contents index
Next: Obtaining Runtime Statistics Up: Built-in predicates Previous: Creating a Protocol of   Contents   Index
Dr. Richard Botting 2001-12-12