prolog_trace.pl -- Print access to predicates
This library prints accesses to specified predicates by wrapping the predicate.
- trace(:Pred) is det
- 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
orredo
), 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 - tracing(:Spec, -Ports)
- True if Spec is traced using Ports
Undocumented predicates
The following predicates are exported, but not or incorrectly documented.