【发布时间】:2016-12-23 22:11:13
【问题描述】:
通常当目标失败时,我会返回“错误”,即目标不满足。
有没有办法让 SWI-Prolog 打印它失败的子目标的谓词、行和/或序列号。
我不想跟踪整个程序,只是想要一些类似于其他编程语言的反馈。
我知道返回false 不是错误,但是在调试时,如果有这个反馈来查明问题会很好。当然可以的话。
谢谢
【问题讨论】:
标签: prolog failure-slice
通常当目标失败时,我会返回“错误”,即目标不满足。
有没有办法让 SWI-Prolog 打印它失败的子目标的谓词、行和/或序列号。
我不想跟踪整个程序,只是想要一些类似于其他编程语言的反馈。
我知道返回false 不是错误,但是在调试时,如果有这个反馈来查明问题会很好。当然可以的话。
谢谢
【问题讨论】:
标签: prolog failure-slice
您可能还想考虑使用@false 多次描述的“故障切片”技术:它有its own tag。
另外,请查看this great answer。您可以使用此处显示的代码来制作自己的“调试器”,让您(除其他外)完全按照您的要求行事。
【讨论】:
也许
...p1, p2, (p3;backtrace(10)), p4,...
在 p3 失败后开始跟踪也很有用:
...p1, p2, (p3;backtrace(10),trace), p4,...
【讨论】: