开发者

Is there any way to start the Ruby debugger on exception?

开发者 https://www.devze.com 2022-12-21 06:59 出处:网络
Is there any way to start开发者_StackOverflow the/a Ruby debugger whenever the code throws an exception, without me wrapping the code like this:

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消