Re: [eclipse-clp-users] Tracing dynamic predicates

From: Thorsten Winterer <thorsten_winterer_at_web.de>
Date: Fri, 11 Jun 2010 16:05:39 +0200
Am 11.06.2010 15:21, schrieb Christian Wirth:
> Hi,
>
> i would like to debug dynamic predicates by tracing them. They are 
> created at runtime by parsing a file.
> Is this possible ?
>   

Yes, you can either use spy/1 to set spypoints on the dynamic
predicates, or place the call to the dynamic predicates in a trace/1 goal.

Suppose you want to debug dynamic predicate q/0, which is called inside
a dynamic predicate p/0.
The first way would look like this:

test :-
    compile_term(q :- writeln("!")),
    compile_term(p :- q),
    spy(q),
    p.


Here's a trace:

[eclipse 2]: trace.
Debugger switched on - creep mode
[eclipse 3]: test.
  (1) 1 CALL  test   %> leap
spypoint added to q/0.
 +(6) 3 CALL  q   %> creep
  (7) 4 CALL  writeln_body("!", eclipse)   %> skip
!
  (7) 4 EXIT  writeln_body("!", eclipse)   %> skip
 +(6) 3 EXIT  q   %> leap

Yes (0.00s cpu)
[eclipse 4]:



The second way would look like this:

test :-
    compile_term(q :- writeln("!")),
    compile_term(p :- trace(q)),
    p.


Here, the debugger gets started automatically:

[eclipse 2]: test.
  (1) 1 CALL  q   %> creep
  (2) 2 CALL  writeln_body("!", eclipse)   %> skip
!
  (2) 2 EXIT  writeln_body("!", eclipse)   %> creep
  (1) 1 EXIT  q   %> creep

Yes (0.00s cpu)
[eclipse 3]:


Cheers,
Thorsten
Received on Fri Jun 11 2010 - 14:05:58 CEST

This archive was generated by hypermail 2.2.0 : Thu Feb 02 2012 - 02:31:58 CET