在lisp SLIME调试器中检查变量

在lisp SLIME调试器中检查变量,lisp,common-lisp,clisp,Lisp,Common Lisp,Clisp,我试图在确定的断点处检查变量的值。以下是我的简化代码: (defun foo () (maplist (lambda (var) (break) var) '(a b c))) slime此时进入调试器模式。因此,我尝试通过按下“:”或“e”键来进行评估,然后键入“(car var)”,但slime一直说: 变量VAR未绑定。 [未绑定变量类型的条件] 我不明白为什么会这样说,因为“(break)”在匿名函数中,在“var”的范围内 在CCL和C

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

(defun foo ()
  (maplist (lambda (var)
        (break)
        var)
      '(a b c)))
slime此时进入调试器模式。因此,我尝试通过按下“:”或“e”键来进行评估,然后键入“(car var)”,但slime一直说:

变量VAR未绑定。 [未绑定变量类型的条件]


我不明白为什么会这样说,因为“(break)”在匿名函数中,在“var”的范围内

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

(declaim (optimize (debug 3)))
之后,您必须重新编译代码才能使其生效


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

当然,当按下
e
时,您必须处于正确的框架中,但我想您知道这一点,而且这也是默认情况下的结果。是的,这对我有用,谢谢。此外,一旦设置了“(declaim(optimize(debug 3)))”行,就必须重新编译lisp代码,以使更改生效。是的,在调试器中的适当变量中求值时,必须处于正确的框架中。