PublicShow sourceprolog_trace.pl -- Print access to predicates

This library prints accesses to specified predicates by wrapping the predicate.

See also
- library(debug) for adding conditional print statements to a program.
Source trace(:Pred) is det
Source trace(:Pred, +PortSpec) is det
Print passes through ports of specified predicates. Pred is a, possible partial, specification of a predicate as it is also used be spy/1 and similar predicates. Where a full predicate specification is of the shape Module:Name/Arity (or `//Arity for non-terminals), both the module and arity may be omitted in which case Pred refers to all matching predicates. PortSpec is either a single port (call, exit, fail or redo), preceded with + or - or a list of these. The predicate modifies the current trace specification and then installs a suitable wrapper for the predicate using wrap_predicate/4. For example:

` ?- trace(append). % append/2: [all] % append/3: [all] % append/1: [all] true.

?- append([a,b], [c], L). T Call: lists:append([a, b], [c], _10478) T Call: lists:append([b], [c], _11316) T Call: lists:append([], [c], _11894) T Exit: lists:append([], [c], [c]) T Exit: lists:append([b], [c], [b, c]) T Exit: lists:append([a, b], [c], [a, b, c]) L = [a, b, c].

?- trace(append, -all). % append/2: Not tracing % append/3: Not tracing % append/1: Not tracing

Compatibility
- This library replaces prior built-in functionality. Unlike the built-in version, ports are printed regardless of the debug flag. The built-in version printed the call-stack depth. That is currently not provided by this replacement.
Source tracing(:Spec, -Ports)
True if Spec is traced using Ports

Undocumented predicates

The following predicates are exported, but not or incorrectly documented.

Source trace(Arg1, Arg2)