在不同文件中设置断点无效

wal*_*pus 6 ruby debugging breakpoints

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

# foo.rb
class Foo
  def bar
    puts "baz"
  end
end
Run Code Online (Sandbox Code Playgroud)

main.rb:

# main.rb
require './foo'
Foo.new.bar
Run Code Online (Sandbox Code Playgroud)

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

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

更新:我在Windows 7以及OS X 10.8上尝试过使用Ruby 1.9.3; 它在两种环境中都不起作用.

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

rai*_*inz 2

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

b Foo:bar
Run Code Online (Sandbox Code Playgroud)

那至少应该在酒吧上打破