检查lisp中的变量SLIME调试程序

问题描述:

我想在确定的断点处检查变量的值。这里是我的简化代码:检查lisp中的变量SLIME调试程序

(defun foo() 
    (maplist (lambda (var) 
     (break) 
     var) 
     '(a b c))) 

史莱姆进入调试器模式在这一点上。所以我尝试通过按“:”或“e”键,然后输入“(汽车变量)”来评估,但是粘液持续说:

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

我很困惑,为什么它这么说,因为“(中断)”是匿名函数中和“VAR”的范围之内。

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

(declaim (optimize (debug 3))) 

你必须重新编译你的代码后才能生效。或者,如果你的实现支持解释,你可以试试,因为一些实现为解释提供了比编译代码更好的调试可能性。

+1

此外,当按下'e'键时,你当然必须在正确的框架中,但我想你知道这一点,而且这就是默认情况下最终结束的地方。 – danlei

+0

是的,这对我很有用,谢谢。另外,一旦你设置了“(declaim(optimize(debug 3)))”这一行,你必须重新编译你的lisp代码以使更改生效。是的,在对调试器中的适当变量进行评估时,您必须处于正确的框架中。 –