2

通常,当目标失败时,我会返回“错误”,即目标不满足。有没有办法让 SWI-Prolog 打印它失败的子目标的谓词、行和/或序列号。我不想跟踪整个程序,只是想要一些类似于其他编程语言的反馈。我知道 return 不是错误false,但是在调试时,最好有这个反馈来查明问题。如果可以的话当然可以。

谢谢

4

2 回答 2

3

您可能还想考虑使用@false 多次描述的“故障切片”技术:它有自己的标签

另外,请查看这个很棒的答案。您可以使用此处显示的代码来制作自己的“调试器”,让您(除其他外)完全按照您的要求行事。

于 2015-09-15T06:53:58.467 回答
0

也许

...p1, p2, (p3;backtrace(10)), p4,...

在 p3 失败后开始跟踪也可能很有用:

...p1, p2, (p3;backtrace(10),trace), p4,...
于 2015-09-15T06:34:00.690 回答