Byrd box tracing model (library(tracing))

Author(s): Francisco Bueno.

This module can be used to spy predicates in a program. Spying a predicate means here that messages are displayed at the call, exit, fail and redo ports of the goals in the bodies of the clauses of the predicate spied.

In order to spy a predicate using this module a program expansion has to be performed on the program module defining the predicate. This is achieved by the tracing package.

This library is a programming exercise in CIAO expansion packages. It does not replace the standard interactive debugger, which has more functionality and is better integrated with the emacs mode. However, this library can sometimes be useful because it is more lightweight and allows tracing compiled code.

Usage and interface

  • Library usage:
    :- use_package(tracing).

    in the program module defining the code to be spied; or

    :- use_module(library(tracing/traces)).

    to call the predicates exported by this module.

  • Exports:

Documentation on exports


Turns spying of predicate F/A in module M on. Declarations of the form spy(F/A) (where M is implicitly taken as the module where the declaration appears) can also be used, as long as the tracing package is included.


Turns spying of predicate F/A in module M off.


Displays messages at the ports of Goal, as long as spying is on for predicate F/A (module-name expanded). Meta-predicate with arguments: trace(goal,?,?).

Documentation on imports

This module has the following direct dependencies: