6

ruby 调试器不会在我在与执行开始时不同的文件中设置的断点处停止。例如,考虑这两个文件foo.rb

# foo.rb
class Foo
  def bar
    puts "baz"
  end
end

main.rb

# main.rb
require './foo'
Foo.new.bar

我开始使用ruby -r debug .\main.rb. 现在,当我尝试使用 在另一个文件的特定行上设置断点时b ./foo.rb:4,我收到消息Set breakpoint 1 at foo.rb:4,但是当 I 时cont,程序执行到最后,并且调试器永远不会停止。但是,如果我在main.rb中的一行(例如b ./main.rb:3)或方法(例如b Foo.bar)中中断,则调试器会按预期停止。

为什么调试器不会在主文件以外的文件中的断点处停止?

更新:我已经在 Windows 7 和 OS X 10.8 上使用 Ruby 1.9.3 进行了尝试;它在这两种环境中都不起作用。

我也刚刚意识到调试器在脚本运行到结束后退出:我开始调试main.rb, use cont,然后baz打印在控制台上,我又回到了 shell 中。这是预期的行为,还是调试器可能已经崩溃?

4

1 回答 1

2

哇,这很奇怪。不确定这是否有帮助,但也许你可以这样做。使用 next 跳过 require 以便加载 Foo 然后

b Foo:bar

至少应该在酒吧打破

于 2012-12-03T05:02:43.060 回答