Is there any way to start开发者_StackOverflow 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.
Hammertime!
I stumbled across this page:post-mortem debugging. Doing this:
Debugger.start(:post_mortem => true)
gets me where I want to.
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
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!
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
I recommend using gem debug
, and if using VScode extension "VSCode rdbg Ruby Debugger", and setting env variable RUBY_DEBUG_POSTMORTEM
to true.
精彩评论