有没有办法在异常时启动Ruby调试器?

时间:2010-02-24 15:25:49

标签: ruby debugging exception

有没有办法在代码抛出异常时启动/ Ruby调试器,而不是像这样包装代码:

begin
  #do something
rescue
  debugger
end

我想以这样一种方式使用它:如果do something部分引发异常,调试器将启动。如果不必修改代码来添加全部的救援块,那将是很好的。

5 个答案:

答案 0 :(得分:6)

答案 1 :(得分:4)

我偶然发现了这个页面:post-mortem debugging。这样做:

Debugger.start(:post_mortem => true)

让我到达我想要的地方。

答案 2 :(得分:3)

require 'ruby-debug'
class Exception
  alias original_initalize initialize
  def initialize(*args)
    original_initalize(*args)
    debugger
  end
end

这将运行原始异常以及调用调试器

答案 3 :(得分:2)

如果你正在使用ruby-debug(它看起来像你),你可以为你想要的异常设置catchPoints。

 (rdbg) catch Exception

例如

答案 4 :(得分:2)

在RubyMine 2.0.x中,转到Run - >查看断点并单击“Ruby Exception Breakpoints”选项卡,然后添加您感兴趣的异常类型...

我想在NetBeans和其他Ruby IDE中应该有类似的东西。

BTW,RubyMine是最好的!