
prolog_breakpoints.pl -- Manage Prolog break-pointsThis module provides an interface for development tools to set and delete break-points, giving a location in the source. Development tools that want to track changes to breakpoints must use user:message_hook/3 to intercept these message terms:
breakpoint(set, Id)breakpoint(delete, Id)Note that the hook must fail after creating its side-effects to give other hooks the opportunity to react.
set_breakpoint(+File, +Line, +Char, -Id) is det
set_breakpoint(+Owner, +File, +Line, +Char, -Id) is detFirst, '$clause_from_source'/4 uses the SWI-Prolog clause-source information to find the last clause starting before Line. '$break_pc' generated (on backtracking), a list of possible break-points.
Note that in addition to setting the break-point, the system must be in debug mode for the breakpoint to take effect. With threading enabled, there are various different ways this may be done. See debug/0, tdebug/0 and tdebug/1. Therefore, this predicate does not enable debug mode.
delete_breakpoint(+Id) is detprint_message(breakpoint(delete, Id)) is called. Message hooks
working on this message may still call breakpoint_property/2.
breakpoint_property(?Id, ?Property) is nondet
user:prolog_event_hook(+Break)[multifile]callEventHook() from '$break_at'/3. This hook is called with
signal handling disabled, i.e., as an atomic action.
set_breakpoint(+File, +Line, +Char, -Id) is det
set_breakpoint(+Owner, +File, +Line, +Char, -Id) is detFirst, '$clause_from_source'/4 uses the SWI-Prolog clause-source information to find the last clause starting before Line. '$break_pc' generated (on backtracking), a list of possible break-points.
Note that in addition to setting the break-point, the system must be in debug mode for the breakpoint to take effect. With threading enabled, there are various different ways this may be done. See debug/0, tdebug/0 and tdebug/1. Therefore, this predicate does not enable debug mode.