调试模式中每一步的数字在SWI Prolog中意味着什么?

时间:2017-05-06 11:21:03

标签: debugging prolog swi-prolog

在SWI Prolog中,您可以通过trace.启用跟踪。以下是取自http://www.cs.ucsb.edu/~kyledewey/cs162w17/debugging_prolog.html

的示例
[trace]  ?- X = 2, allBetween(X, 0, 3).
   Call: (7) _G1752=2 ? creep
   Exit: (7) 2=2 ? creep
   Call: (7) allBetween(2, 0, 3) ? creep
   Call: (8) 0=<3 ? creep
   Exit: (8) 0=<3 ? creep
   Call: (8) 0=2 ? creep
   Fail: (8) 0=2 ? creep
   Redo: (7) allBetween(2, 0, 3) ? creep

每一步的开头都有一个数字。我认为这意味着深度,因为它在FailRedo处减少。但是,我不知道为什么它不是从0开始,而是从7或8开始(在我的所有程序中)。

我试图在Prolog网站上搜索引用但找不到它。

它究竟是什么意思,为什么从7/8开始?

1 个答案:

答案 0 :(得分:0)

来自Swi-Prolog文档:

  

跟踪器显示端口,显示端口名称,当前深度   递归和目标。

取自:http://www.swi-prolog.org/pldoc/man?section=debugoverview

此外,GNU Prolog文档也对Prolog调试有一些很好的解释:http://gprolog.univ-paris1.fr/manual/gprolog.html#Running-and-stopping-the-debugger