【问题标题】:Setting breakpoint in different file has no effect在不同的文件中设置断点无效
【发布时间】:2012-09-04 12:53:34
【问题描述】:

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,但是当我cont 时,程序执行到最后,调试器永远不会停止。但是,如果我在 main.rb 中换行,例如b ./main.rb:3,或方法,例如b Foo.bar,调试器按预期停止。

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

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

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

【问题讨论】:

  • 您是否尝试过在 main:3 中设置断点(在 require 加载后),运行到该断点,然后设置第二个断点?
  • @AlexBrown 根据您的建议,我已经使用 next 跳过了要求,然后在 foo.rbcont'd 中添加了断点 - 结果相同。
  • 我现在使用 ruby​​ 2.1.0 时遇到了同样的问题。你解决了吗?
  • 还没有,它仍然存在于我的 ruby​​ 安装中

标签: ruby debugging breakpoints


【解决方案1】:

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

b Foo:bar

至少应该在酒吧休息

【讨论】:

  • 感谢您的指点,它有效。特定行上的断点的原始问题仍然存在。
  • 是的,我也用你的例子玩了很长时间。很奇怪,它似乎应该可以工作。
猜你喜欢
  • 1970-01-01
  • 2015-04-14
  • 2022-01-22
  • 2012-03-29
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多