我正在尝试使用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
但不是x
。 Detailed output.
这只是使用ruby-debug和块的限制,还是我可以为我工作的东西?
(与此同时,我使用的实例变量比我的规格要多。)
答案 0 :(得分:3)
你引用的例子是ruby-debug有问题的。 ruby-debug有一个限制,它只在语句“line”事件处停止,而“debugger”调用是块的最后一个语句。因此,在调试器停止时给出的示例中,您不再处于“应该能够被调试”的块中,并且x已经消失。
程序员似乎使用的一个解决方法是在“调试器”之后但在结束之前放置某种语句。
在下一个版本rbdbgr中(对于带补丁的YARV Ruby 1.9),您可以在从块返回之前停止。