Did you know ... | Search Documentation: |
![]() | prolog_debug.pl -- User level debugging tools |
This library provides tools to control the Prolog debuggers. Traditionally this code was built-in. Because these tools are only required in (interactive) debugging sessions they have been moved into the library.
informational
, with one of
the following terms, where Spec is of the form M:Head.
spy(Spec)
nospy(Spec)
forall(debugging_hook(DebugMode),
true)
and that may be used to extend the information printed from
other debugging libraries.error(Formal, Context)
exceptions that unify. The
tracer is started when a matching exception is raised. This
predicate enables debug mode using debug/0 to get more context
about the exception. Even with debug mode disabled exceptions are
still trapped and thus one may call nodebug/0 to run in normal mode
after installing a trap. Exceptions are trapped in any thread. Debug
mode is only enabled in the calling thread. To enable debug mode in
all threads use tdebug/0.
Calling debugging/0 lists the enabled traps. The predicate notrap/1 removes matching (unifying) traps.
In many cases debugging an exception that is caught is as simple as below (assuming run/0 starts your program).
?- trap(_). ?- run.
The multifile hook trap_alias/2 allow for defining short hands for commonly used traps. Currently this defines
catch(SytemPred, _, _)
, i.e., a catch
directly wrapped around a call to a built-in. In that case it is
highly unlikely that we want the debugger to step in.The following predicates are exported from this file while their implementation is defined in imported modules or non-module files loaded by this module.
informational
, with one of
the following terms, where Spec is of the form M:Head.
spy(Spec)
nospy(Spec)
informational
, with one of
the following terms, where Spec is of the form M:Head.
spy(Spec)
nospy(Spec)
error(Formal, Context)
exceptions that unify. The
tracer is started when a matching exception is raised. This
predicate enables debug mode using debug/0 to get more context
about the exception. Even with debug mode disabled exceptions are
still trapped and thus one may call nodebug/0 to run in normal mode
after installing a trap. Exceptions are trapped in any thread. Debug
mode is only enabled in the calling thread. To enable debug mode in
all threads use tdebug/0.
Calling debugging/0 lists the enabled traps. The predicate notrap/1 removes matching (unifying) traps.
In many cases debugging an exception that is caught is as simple as below (assuming run/0 starts your program).
?- trap(_). ?- run.
The multifile hook trap_alias/2 allow for defining short hands for commonly used traps. Currently this defines