在lisp SLIME调试器中检查一个变量

7
我正在尝试在特定断点检查变量的值。这是我的简化代码:
(defun foo ()
  (maplist (lambda (var)
        (break)
        var)
      '(a b c)))

此时Slime进入了调试器模式。我尝试按下“:”或“e”键进行评估,然后输入“(car var)”,但是Slime一直报错:

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

我很困惑为什么会这样,因为“(break)”在匿名函数内部且在“var”的范围内。

1个回答

4

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

(declaim (optimize (debug 3)))

为使更改生效,您需要在此之后重新编译您的代码。

或者,如果您的实现支持解释,您可以尝试使用解释模式,因为有些实现提供更好的调试功能,适用于解释模式而不是编译模式。


1
当然,在按 e 键时,你必须在正确的帧中,但我想你已经知道了。默认情况下,你最终会在那里。 - danlei
是的,这对我有用,谢谢。另外,一旦您设置了"(declaim (optimize (debug 3)))"行,您必须重新编译Lisp代码才能使更改生效。是的,在调试器中评估适当变量时,您必须处于正确的框架中。 - Steve Quezadas

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