Ответ 1
Я наткнулся на эту страницу: посмертная отладка. Выполнение этого действия:
Debugger.start(:post_mortem => true)
получает меня туда, куда я хочу.
Есть ли способ запустить отладчик Ruby Ruby всякий раз, когда код выдает исключение, без того, чтобы я обменивал код следующим образом:
begin
#do something
rescue
debugger
end
Я хотел бы иметь его таким образом, что если часть do something
вызывает исключение, начнется отладчик. Было бы неплохо не модифицировать код, чтобы добавлять блоки восстановления во всём.
Я наткнулся на эту страницу: посмертная отладка. Выполнение этого действия:
Debugger.start(:post_mortem => true)
получает меня туда, куда я хочу.
require 'ruby-debug'
class Exception
alias original_initalize initialize
def initialize(*args)
original_initalize(*args)
debugger
end
end
Это запустит исходное исключение, а также отлаживатель вызова
если вы используете ruby-debug (и похоже, что это так), вы можете установить catchPoints для требуемого исключения.
(rdbg) catch Exception
например
В RubyMine 2.0.x перейдите в Run → View Breakpoints и нажмите "Ruby Exception Breakpoints", затем добавьте тип интересующего вас исключения...
В NetBeans и других Ruby IDE должно быть что-то похожее.
BTW, RubyMine - ЛУЧШИЙ!