2011-10-08 48 views
7

我想在確定的斷點處檢查變量的值。這裏是我的簡化代碼:檢查lisp中的變量SLIME調試程序

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

史萊姆進入調試器模式在這一點上。所以我嘗試通過按「:」或「e」鍵,然後輸入「(汽車變量)」來評估,但是粘液持續說:

變量VAR未綁定。 [條件類型的未綁定變量]

我很困惑,爲什麼它這麼說,因爲「(中斷)」是匿名函數中和「VAR」的範圍之內。

回答

4

這對CCL和CLisp有效。我認爲這是否有效取決於您的實施情況,也許您的設置爲OPTIMIZE。你可以嘗試:

(declaim (optimize (debug 3))) 

你必須重新編譯你的代碼後才能生效。或者,如果你的實現支持解釋,你可以試試,因爲一些實現爲解釋提供了比編譯代碼更好的調試可能性。

+1

此外,當按下'e'鍵時,你當然必須在正確的框架中,但我想你知道這一點,而且這就是默認情況下最終結束的地方。 – danlei

+0

是的,這對我很有用,謝謝。另外,一旦你設置了「(declaim(optimize(debug 3)))」這一行,你必須重新編譯你的lisp代碼以使更改生效。是的,在對調試器中的適當變量進行評估時,您必須處於正確的框架中。 –