调试Lisp和SLIME,错误信息“找不到源代码位置”

5

我写的代码有缺陷。

例子:

(print (/ 1 0))

我正在尝试使用C-c C-c进行编译。

并通过堆栈帧捕获错误。

我想看到代码中出现错误的行。在堆栈帧上点击'v',然后捕获错误。

Error: Cannot find source location for: #<COMPILED-CODE-LOCATION 
(SB-C::VARARGS-ENTRY /)>  

我该如何跳转到代码中的某一行? 截图enter image description here

你的意思是说,你正在使用C-c C-c进行编译吗?这个快捷键是否绑定到了slime-compile-file函数? - Luke Girvin
C-c C-c - 编译光标所在的顶层表单。 - Rusty Robot
2个回答

6

从错误信息可以看出,你想要跳转到的行在SB-C包中,这是SBCL的一部分。 如果你没有SBCL源代码(你安装了二进制文件或者已经删除了源代码),你应该下载相关版本的源码,然后像这样在.sbclrc中链接它们(根据http://www.cliki.net/SLIME%20Features的说明):

(setf (logical-pathname-translations "SYS") 
      '(("SYS:SRC;**;*.*.*" #P"/opt/sbcl/src/**/*.*")
        ("SYS:CONTRIB;**;*.*.*" #P"/opt/sbcl/contrib/**/*.*")))

或者您可以从源代码编译SBCL,它会自动知道它们的位置。

抱歉,我有些困惑并没有正确地修复错误,我会进行修正。 - Rusty Robot
无论如何,解决方案应该是相同的。 - Vsevolod Dyomkin
1
在 .sbclrc 中设置 (sb-ext:set-sbcl-source-location "/path/to/sbcl/source/")。来源:查找 SBCL 源代码 [链接](http://xach.livejournal.com/300290.html) - Ivan Sviatenko

0

你在那行代码上面有没有写(proclaim '(optimize debug))?这个函数会确保你的系统获取到所有的调试数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接