检查lisp SLIME调试器中的变量

Ste*_*das 7 lisp clisp common-lisp

我试图在确定的断点处检查变量的值.这是我的简化代码:

(defun foo ()
  (maplist (lambda (var)
        (break)
        var)
      '(a b c)))
Run Code Online (Sandbox Code Playgroud)

此时slime进入调试器模式.所以我尝试通过按":"或"e"键来评估,然后输入"(car var)",但是史莱姆继续说:

变量VAR是未绑定的.[UNBOUND-VARIABLE类型的条件]

我很困惑为什么它说这个,因为"(break)"在匿名函数内并且在"var"的范围内.

dan*_*lei 4

这对我在 CCL 和 CLisp 下有效。我认为这是否有效取决于您的实现,也许还取决于您的OPTIMIZE设置。你可以尝试:

(declaim (optimize (debug 3)))
Run Code Online (Sandbox Code Playgroud)

之后您必须重新编译代码才能生效。

或者,如果您的实现支持解释,您可以尝试这样做,因为某些实现为解释提供了比编译代码更好的调试可能性。