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

发布于 2024-11-09 05:26:21 字数 406 浏览 0 评论 0原文

我正在研究 Land of Lisp,使用 CLisp,使用 Slimv 在 Vim 中编写代码,然后使用 alt-tab 键切换到另一个终端窗口,并使用 (load 'file.lisp) 将文件加载到 REPL 中,然后在重复。

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

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

如何改进 clisp 错误消息?

谢谢!

I'm working through Land of Lisp, using CLisp, writing the code in Vim with Slimv, then alt-tabbing to another terminal window and loading the file into the REPL with (load 'file.lisp), then running the programs at the REPL.

When I get an error in the REPL, is there any way to ascertain what line in file.lisp the error occurred on? I don't see line numbers mentioned explicitly in the REPL error output, is there any other way?

I found this similar question, but the only answer says to use something other than Clisp like sbcl, allegro, etc.:

How can I improve clisp error messages?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

最丧也最甜 2024-11-16 05:26:21

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

Simple answer: Just compile the code instead of loading it into the REPL: clisp -c file.lisp. Compiler error/warnings show the line numbers. Debug it that way, then load into the REPL. Good enough for now.

温折酒 2024-11-16 05:26:21

如果你只是想知道它发生在哪个函数中,可以在发生错误时在 REPL 提示符处使用“:bt”。它会打印出类似 GDB 的堆栈跟踪,您可以使用它来找出错误发生在哪个函数上。

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.

鸠书 2024-11-16 05:26:21

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

(load 'file.lisp :echo t)

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

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

The load function in clisp has an :echo option, see the implementation notes. When you use this option your files gets echoed to the output. Hence when an error occurs you can see the corresponding code. For your case the expression would be:

(load 'file.lisp :echo t)

Some extra options may be useful, such as :verbose and :print, in which case the expression would be:

(load 'file.lisp :verbose t :print t :echo t)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文