Sometimes the debugger cannot find the source code for a predicate.
This will happen when there is no source code, or when the
correspondence between the compiled code and source code cannot be
determined. For example, a dynamic predicate does not necessarily
have source code, and so the debugger currently cannot show source.
Similarly, a meta-call (executing a term with call/1
) does not
have any source code. The debugger also often cannot find the source
code of clauses produced by term_expansion/2
. Predicates that are
compiled from user
do not have source either!
When source linking is not possible, the debugger will show as much of
the clause as it knows in place of the source file, with the appropriate
arrows. At a head port, it will show the goal being called, followed by
:- ...
indicating that this goal will be matched with the head
of a clause. For the head of a predicate descendent/2
, it might look
like this:
===> dynamic_pred(_743) :- ...
At a call port whose source code cannot be shown, the debugger will
show ... :-
followed by the goal, indicating that this goal is
in some unknown clause. The arrow will be as appropriate for that
port. The call port for a call to descendant/2
might look like this:
... :- ---> descendant(peter, _749).