I am tring to understand how to set the depth for the trace debug
facility.
If I have a program as follows
PROGRAM NAME: sga.pl
findterm([H],_,H).
findterm([H|T],X,N):-
Y is X + H,
test(Y),
findterm(T,Y,N).
test(6).
test(_).
If I loaded it in to the interpreter with consult I seem to get a depth
of debug as follows.
Ciao-Prolog 1.6 #1: Thu Aug 17 10:06:32 BST 2000
?- consult('sga.pl').
yes
?- debug_module(user).
{Modules selected for debugging: [user]}
{No module is selected for source debugging}
yes
?- trace.
{The debugger will first creep -- showing everything (trace)}
yes
{trace}
?- findterm([1,2,3,4,5,6,7,8,9],0,N).
1 1 Call: user:findterm([1,2,3,4,5,6,7,8,9],0,_370) ?
2 2 Call: _570 is 0+1 ?
2 2 Exit: 1 is 0+1 ?
3 2 Call: user:test(1) ?
3 2 Exit: user:test(1) ?
4 2 Call: user:findterm([2,3,4,5,6,7,8,9],1,_370) ?
5 3 Call: _1016 is 1+2 ?
5 3 Exit: 3 is 1+2 ?
6 3 Call: user:test(3) ?
6 3 Exit: user:test(3) ?
7 3 Call: user:findterm([3,4,5,6,7,8,9],3,_370) ?
8 4 Call: _1461 is 3+3 ?
8 4 Exit: 6 is 3+3 ?
9 4 Call: user:test(6) ?
9 4 Exit: user:test(6) ?
10 4 Call: user:findterm([4,5,6,7,8,9],6,_370) ?
11 5 Call: _1905 is 6+4 ?
11 5 Exit: 10 is 6+4 ?
12 5 Call: user:test(10) ?
12 5 Exit: user:test(10) ?
13 5 Call: user:findterm([5,6,7,8,9],10,_370) ?
14 6 Call: _2348 is 10+5 ?
14 6 Exit: 15 is 10+5 ?
15 6 Call: user:test(15) ?
15 6 Exit: user:test(15) ? a
{ Execution aborted }
?- ^C
If I use ensure_loaded I can only debug as follows:
ensure_loaded('sga.pl').
?- debug_module(user).
{Modules selected for debugging: [user]}
{No module is selected for source debugging}
yes
?- trace.
{The debugger will first creep -- showing everything (trace)}
yes
{trace}
?- findterm([1,2,3,4,5,6,7,8,9],0,N).
1 1 Call: user:findterm([1,2,3,4,5,6,7,8,9],0,_370) ?
1 1 Exit: user:findterm([1,2,3,4,5,6,7,8,9],0,9) ?
N = 9 ?
What do I need to do to debug to this level using ensure_loaded as the
mechanism for loading the code?