Did you know ... Search Documentation:
prolog_debug.pl -- User level debugging tools
PublicShow source

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.

Source prolog:debug_control_hook(+Action)[multifile]
Allow user-hooks in the Prolog debugger interaction. See the calls below for the provided hooks. We use a single predicate with action argument to avoid an uncontrolled poliferation of hooks.
Source spy :Spec is det
Source nospy :Spec is det
Source nospyall is det
Set/clear spy-points. A successfully set or cleared spy-point is reported using print_message/2, level informational, with one of the following terms, where Spec is of the form M:Head.
  • spy(Spec)
  • nospy(Spec)
See also
- spy/1 and nospy/1 call the hook prolog:debug_control_hook/1 to allow for alternative specifications of the thing to debug.
Source debugging is det
Report current status of the debugger.
Source trap(+Formal) is det
Source notrap(+Formal) is det
Install a trap on 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).

?- gtrap(_).
?- run.
See also
- gtrap/1 to trap using the graphical debugger.
- Edit exceptions menu in PceEmacs and the graphical debugger that provide a graphical frontend to trap exceptions.
Source exception_hook(+ExIn, -ExOut, +Frame, +Catcher) is failure
Trap exceptions and consider whether or not to start the tracer.

Undocumented predicates

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

Source notrap(Arg1)
Source nospy Arg1
Source nospyall