在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
每一步的开头都有一个数字。我认为这意味着深度,因为它在Fail
和Redo
处减少。但是,我不知道为什么它不是从0开始,而是从7或8开始(在我的所有程序中)。
我试图在Prolog网站上搜索引用但找不到它。
它究竟是什么意思,为什么从7/8开始?
答案 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