2009-11-18 65 views
2

我想用ruby-debug來調試我的規格。當我這樣做時,我無法訪問局部變量。但是,實例變量很好。有沒有辦法使這個工作與局部變量?爲什麼ruby-debug不允許我在規範中看到局部變量?

下面是一個例子規格:

require 'spec/autorun' 
describe "empty spec" do 
    it "should be able to be debugged" do 
    x = 'foo' 
    @x = 'bar' 
    debugger 
    end 
end 

在調試器/ IRB,我可以看到@x但不xDetailed output.

這只是使用紅寶石調試塊的限制還是這是我可以爲我工作?

(在平均時間,我使用的多個實例變量不是我真的應該在我的規格。)

回答

3

你舉的例子是紅寶石調試問題。 ruby-debug有一個侷限性,它只能在語句「行」事件處停止,而「調試器」調用是塊的最後一個語句。因此在本例中,當調試器停止時,您不再處於「應該能夠被調試」模塊,並且x消失。

程序員似乎使用的一種解決方法是在「調試器」之後但在結束之前放置某種語句。

在下一個化身rbdbgr(對於帶有補丁的YARV Ruby 1.9)中,可以在從塊返回之前停止。

相關問題