|Did you know ...||Search Documentation:|
|library(prolog_trace): Print access to predicates|
library(debug)for adding conditional print statements to a program.
This library prints accesses to specified predicates by wrapping the predicate.
//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 (
redo), preceded with
-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). % lists:append/2: [all] % lists:append/3: [all] % append/1: [all] true. ?- append([a,b], [c], L). T  Call: lists:append([a, b], [c], _18032) T  Call: lists:append([b], [c], _19410) T  Call: lists:append(, [c], _20400) T [28 +0.1ms] Exit: lists:append(, [c], [c]) T [19 +0.2ms] Exit: lists:append([b], [c], [b, c]) T [10 +0.5ms] Exit: lists:append([a, b], [c], [a, b, c]) L = [a, b, c]. ?- trace(append, -all). % lists:append/2: Not tracing % lists:append/3: Not tracing % append/1: Not tracing
The text between
 indicates the call depth (first
number) and for all ports except the
call port the wall
time since the start (call port) in milliseconds. Note that the
instrumentation and print time is included in the time. In the example
above the actual time is about 0.00001ms on todays hardware.