为什么ruby-debug不允许我在我的规范中看到局部变量?

时间:2009-11-18 21:40:38

标签: ruby rspec

我正在尝试使用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.

这只是使用ruby-debug和块的限制,还是我可以为我工作的东西?

(与此同时,我使用的实例变量比我的规格要多。)

1 个答案:

答案 0 :(得分:3)

你引用的例子是ruby-debug有问题的。 ruby-debug有一个限制,它只在语句“line”事件处停止,而“debugger”调用是块的最后一个语句。因此,在调试器停止时给出的示例中,您不再处于“应该能够被调试”的块中,并且x已经消失。

程序员似乎使用的一个解决方法是在“调试器”之后但在结束之前放置某种语句。

在下一个版本rbdbgr中(对于带补丁的YARV Ruby 1.9),您可以在从块返回之前停止。