4

我正在使用 CLisp 在 Lisp 的土地上工作,使用 Slimv 在 Vim 中编写代码,然后 alt-tabbing 到另一个终端窗口并使用 (load 'file.lisp) 将文件加载到 REPL,然后在回复。

当我在 REPL 中遇到错误时,有没有办法确定 file.lisp 中的哪一行发生了错误?我没有看到 REPL 错误输出中明确提到的行号,还有其他方法吗?

我发现了这个类似的问题,但唯一的答案是使用 Clisp 以外的东西,比如 sbcl、allegro 等:

如何改进 clisp 错误消息?

谢谢!

4

3 回答 3

4

简单的回答:只需编译代码而不是将其加载到 REPL:clisp -c file.lisp中。编译器错误/警告显示行号。以这种方式调试它,然后加载到 REPL 中。现在已经足够好了。

于 2011-05-25T17:37:59.200 回答
2

If you just want to know what function it occurred in, you can use ":bt" at the REPL prompt when an error happens. It'll print out a GDB-like stacktrace that you can use to figure out which function the error happened at.

于 2013-05-10T00:59:32.760 回答
1

clisp 中的load函数有一个:echo选项,请参见实现说明。当您使用此选项时,您的文件将回显到输出。因此,当发生错误时,您可以看到相应的代码。对于您的情况,表达式为:

(load 'file.lisp :echo t)

一些额外的选项可能有用,例如:verboseand :print,在这种情况下,表达式为:

(load 'file.lisp :verbose t :print t :echo t)
于 2020-06-29T11:12:03.973 回答