Есть ли способ запустить отладчик Ruby в исключительных случаях? - PullRequest
12 голосов
/ 24 февраля 2010

Есть ли способ запустить отладчик / a Ruby всякий раз, когда код вызывает исключение, без того, чтобы я обернул код следующим образом:

begin
  #do something
rescue
  debugger
end

Я бы хотел, чтобы это было так, что если часть do something вызывает исключение, запускается отладчик. Было бы хорошо, если бы не нужно было изменять код для добавления начальных блоков восстановления.

Ответы [ 5 ]

6 голосов
/ 25 февраля 2010
4 голосов
/ 25 февраля 2010

Я наткнулся на эту страницу: посмертная отладка .Делая это:

Debugger.start(:post_mortem => true)

возвращает меня туда, куда я хочу.

3 голосов
/ 24 февраля 2010
require 'ruby-debug'
class Exception
  alias original_initalize initialize
  def initialize(*args)
    original_initalize(*args)
    debugger
  end
end

Это запустит исходное исключение, а также вызовет отладчик

2 голосов
/ 26 февраля 2010

В RubyMine 2.0.x зайдите в Run -> View Breakpoints и нажмите вкладку «Ruby Exception Breakpoints», затем добавьте тип интересующего вас исключения ...

Должно быть что-то подобное вДумаю, NetBeans и другие Ruby IDE.

Кстати, RubyMine - ЛУЧШИЙ!

2 голосов
/ 25 февраля 2010

если вы используете ruby-debug (и похоже, что вы это делаете), вы можете установить catchPoints для желаемого исключения.

 (rdbg) catch Exception

например

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...