2009-11-18 35 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)中,可以在从块返回之前停止。

相关问题