我正在尝试使用 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 和 block 的限制还是我可以为我工作?
(与此同时,我使用的实例变量比我的规范中实际应该使用的要多。)
最佳答案
您引用的示例在 ruby-debug 中存在问题。 ruby-debug 有一个限制,它仅在语句“行”事件处停止,并且“调试器”调用是 block 的最后一个语句。因此,在您给出的示例中,当调试器停止时,您不再处于“应该能够被调试” block 中,并且 x 消失了。
程序员似乎使用的一种解决方法是在“调试器”之后但在结束之前放置某种语句。
下一世rbdbgr (对于带补丁的 YARV Ruby 1.9),您可以在从 block 返回之前停止。
关于ruby - 为什么 ruby-debug 不允许我在规范中查看局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759263/