2013-07-25 64 views
0

我正在使用SLIME和SBCL。通常在SBCL中,我可以做(step (call-some-function 1 2 3)),並且我將能夠遍歷/進入/退出每行代碼,以及執行我自己的任意表達式以查看某些變量的當前狀態。在使用STEP時評估SLIME中的表達式

但如果我嘗試做同樣在泥的REPL,我得到:

Evaluating call: 
    (CP-GET-ALL-PE-MATCHES-ANY-LENGTH SENT-ID) 
With arguments: 
    581869302 


    [Condition of type STEP-FORM-CONDITION] 

Restarts: 
0: [STEP-CONTINUE] Resume normal execution 
1: [STEP-OUT] Resume stepping after returning from this function 
2: [STEP-NEXT] Step over call 
3: [STEP-INTO] Step into call 
4: [ABORT] Exit debugger, returning to top level. 

Backtrace: 
    0: (call-some-function 1 2 3) 
    ... 

似乎有不被任何方式獲得的sent-id當前值,或評估(nth 1 some-list)

這是事實,如果是這樣,這是否意味着我將不得不在終端中啓動第二個SBCL實例,並在SLIME中同時執行該函數以獲取此功能?

+0

我對有同樣的問題有模糊的記憶,但我不記得我是如何處理它的,如果有的話。如果不是'(步驟...)'你在函數定義上做了'C-u C-c C-c',是否會發生同樣的事情? – 2013-07-25 16:41:52

+0

嗯...那現在不起作用:)必須是一些貢獻的圖書館/我用了大約一年前的東西,而且沒有更多。無論如何,另一件事情在我腦海中爆發:你是否優化了調試?我認爲一些調試信息可能會在默認設置下丟失。 – 2013-07-25 17:26:39

+0

@wvxvw感謝您的回覆!不幸的是,我已經設置調試到最大('(sb-ext:restrict-compiler-policy'debug 3)')並沒有什麼改變:( – wrongusername

回答

2

放置在調試器中時,仍然可以使用SLIME中的REPL,我經常這樣做,例如當發生錯誤時。您只需切換到REPL緩衝區並鍵入。它最初不會顯示提示,但只要您給它一個初始表單,它就會顯示。