如何使用JPL获得swi prolog控制台输出?

如何使用JPL获得swi prolog控制台输出?,prolog,swi-prolog,jpl,Prolog,Swi Prolog,Jpl,我的一个项目需要swipl控制台输出(跟踪输出)。我试图使用JPL7API来实现这一点,但似乎找不到从swipl控制台获取输出的方法。我有办法做到这一点吗?或者我是否可以运行一个查询,将跟踪输出定向到一个文件,然后从那里开始工作 提前感谢。您可以尝试使用/1,然后开始以leash(-all)为前缀的查询,跟踪 编辑一个解决方案(?)以在回溯时更改文件:我将保存在一个模块中(可能命名为trace_协议:-),然后与?-[trace_协议]。一起使用,然后再使用?-trace,trace_协议(附加

我的一个项目需要swipl控制台输出(跟踪输出)。我试图使用JPL7API来实现这一点,但似乎找不到从swipl控制台获取输出的方法。我有办法做到这一点吗?或者我是否可以运行一个查询,将跟踪输出定向到一个文件,然后从那里开始工作

提前感谢。

您可以尝试使用/1,然后开始以
leash(-all)为前缀的查询,跟踪

编辑一个解决方案(?)以在回溯时更改文件:我将保存在一个模块中(可能命名为trace_协议:-),然后与
?-[trace_协议]。
一起使用,然后再使用
?-trace,trace_协议(附加(X,Y,[1,2,3])。

编写代码花了很多时间,因为nb_current/2中似乎有一个bug。不应该,但它会引发一个异常-实际上,该异常是从库(clpfd)中引发的,即使它没有直接包含在我的测试模块中

例如,顺序编号的*.tty文件最好在终端中显示

$ cat *.tty

因为存在TTY格式转义序列。也许这样的序列可以用
?-set\u prolog\u标志(color\u term,false)来关闭。

谢谢!成功了!除了我必须在末尾添加
noprotocol
以将控制台输出刷新到文件中。是否可以在每个不同的解决方案中更改我打印控制台输出的目标文件?不,我认为这不容易。。。您可以尝试“驱动”查询过程,并在回溯时调用协议/1,可能会添加一个时间戳。让我来展示代码,但您必须测试…驱动查询过程是什么意思?此外,协议似乎没有输出解决方案。有什么方法可以做到这一点吗?请参阅我上次的编辑,“驱动程序”是trace_protocol/1。嗯
$ cat *.tty