Allow tracing pengine execution under SWISH.
- $swish wrapper(:Goal, ?ContextVars)
- Wrap a SWISH goal in '$swish wrapper'. This has two advantages:
we can detect that the tracer is operating on a SWISH goal by
inspecting the stack and we can save/restore the debug state to
deal with debugging next solutions.
ContextVars is a list of variables that have a reserved name. The hooks pre_context/3 and post_context/3 can be used to give these variables a value extracted from the environment. This allows passing more information than just the query answers.
_residuals = '$residuals'(Residuals)is added to the residual goals by pengines:event_to_json/4 from
- pre_context(Name, Goal, Var) is semidet[multifile]
- post_context(Name, Goal, Var) is semidet[multifile]
- Multifile hooks to extract additional information from the Pengine, either just before Goal is started or after an answer was produced. Extracting the information is triggered by introducing a variable with a reserved name.
- pengines:prepare_goal(+GoalIn, -GoalOut, +Options) is semidet[multifile]
- Handle the
breakpoints(List)option to set breakpoints prior to execution of the query. If breakpoints are present and enabled, the goal is executed in debug mode. List is a list, holding a dict for each source that has breakpoints. The dict contains these keys:
fileis the source file. For the current Pengine source this is
breakpointsis a list of lines (integers) where to put break points.
- prolog_clause:open_source(+File, -Stream) is semidet[multifile]
- Open SWISH non-file sources.