我正在使用Lisp,使用CLisp,使用Slimv在Vim中编写代码,然后使用alt-tabbing到另一个终端窗口并使用(load'file.lisp)将文件加载到REPL中,然后运行REPL的计划。
当我在REPL中出现错误时,有没有办法确定file.lisp中的哪一行发生了错误?我没有看到REPL错误输出中明确提到的行号,还有其他方法吗?
我发现了这个类似的问题,但唯一的答案是使用除了clp之外的东西,如sbcl,allegro等:
How can I improve clisp error messages?
谢谢!
答案 0 :(得分:3)
简单回答:只需编译代码而不是将其加载到REPL中:clisp -c file.lisp
。编译器错误/警告显示行号。以这种方式调试,然后加载到REPL中。现在好了。
答案 1 :(得分:2)
如果您只想知道它发生了什么功能,可以在发生错误时在REPL提示符下使用“:bt”。它将打印出类似GDB的堆栈跟踪,您可以使用它来确定错误发生在哪个函数。
答案 2 :(得分:1)
cli中的load
函数具有:echo
选项,请参见implementation notes。使用此选项时,文件将回显到输出。因此,当发生错误时,您可以看到相应的代码。对于您的情况,表达式为:
(load 'file.lisp :echo t)
一些额外的选项可能有用,例如:verbose
和:print
,在这种情况下,表达式为:
(load 'file.lisp :verbose t :print t :echo t)