Clisp REPL错误输出:如何在发生错误的文件中查找行号?

Clisp REPL错误输出:如何在发生错误的文件中查找行号?,lisp,read-eval-print-loop,clisp,land-of-lisp,Lisp,Read Eval Print Loop,Clisp,Land Of Lisp,我正在Lisp的土地上工作,使用CLisp,用Slimv在Vim中编写代码,然后用alt键切换到另一个终端窗口,用(load'file.Lisp)将文件加载到REPL中,然后在REPL上运行程序 当我在REPL中遇到错误时,有没有办法确定file.lisp中的哪一行发生了错误?我没有看到REPL错误输出中明确提到的行号,还有其他方法吗 我发现了这个类似的问题,但唯一的答案是使用Clisp以外的东西,如sbcl、allegro等: 谢谢 简单回答:只需编译代码,而不是将其加载到REPL:clis

我正在Lisp的土地上工作,使用CLisp,用Slimv在Vim中编写代码,然后用alt键切换到另一个终端窗口,用(load'file.Lisp)将文件加载到REPL中,然后在REPL上运行程序

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

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


谢谢

简单回答:只需编译代码,而不是将其加载到REPL:
clisp-c文件.lisp
。编译器错误/警告显示行号。这样调试它,然后加载到REPL中。现在就足够了。

如果您只想知道它发生在哪个函数中,那么当发生错误时,您可以在REPL提示符下使用“:bt”。它将打印出一个类似GDB的stacktrace,您可以使用它来确定错误发生在哪个函数。

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

(load 'file.lisp :echo t)
(load 'file.lisp :verbose t :print t :echo t)
一些额外的选项可能有用,例如
:verbose
:print
,在这种情况下,表达式为:

(load 'file.lisp :echo t)
(load 'file.lisp :verbose t :print t :echo t)