Is there any way to start the Ruby debugger on exc

2020-02-19 11:29发布

问题:

Is there any way to start the/a Ruby debugger whenever the code throws an exception, without me wrapping the code like this:

begin
  #do something
rescue
  debugger
end

I'd like to have it in such a way that if the do something part raises an exception, the debugger will start. It would be nice not having to modify the code to add begin rescue blocks all over.

回答1:

Hammertime!



回答2:

I stumbled across this page:post-mortem debugging. Doing this:

Debugger.start(:post_mortem => true)

gets me where I want to.



回答3:

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

This will run the original exception as well as call debugger



回答4:

In RubyMine 2.0.x go to Run -> View Breakpoints and click "Ruby Exception Breakpoints" tab, then add the type of the exception you are interested in...

There should be something similar in NetBeans and other Ruby IDEs i guess.

BTW, RubyMine is the BEST!



回答5:

if you're using ruby-debug (and it looks like you are), you can set catchPoints for the exception you want.

 (rdbg) catch Exception

for example