2010-02-24 19 views
12

Czy jest jakiś sposób, aby rozpocząć/debuger Ruby ilekroć kod zgłasza wyjątek, bez owijania mi kod jak poniżej:Czy istnieje sposób na uruchomienie debuggera Ruby na wyjątku?

begin 
    #do something 
rescue 
    debugger 
end 

chciałbym mieć go w taki sposób, że jeśli do something part podnosi wyjątek, rozpocznie się debugger. Byłoby miło nie modyfikować kodu, aby dodać bloki ratunkowe.

Odpowiedz

4

natknąłem tej strony: post-mortem debugging. Robi to:

Debugger.start(:post_mortem => true) 

dostaje mnie tam, gdzie chcę.

+0

wydawało mi się to wcześniej dla mnie skuteczne, ale ostatnio nie było żadnej radości z klejnotowego debuggera :-( –

+0

@SamJoseph czy znalazłeś sposób na zrobienie tego za pomocą widelca 'debuggera' klejnotu 'ruby-debug'? –

+0

@Sherwin jeszcze nie :-( –

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

ten będzie działał oryginalny wyjątek, a także połączenia debugera

2

jeśli używasz ruby-debug (i wygląda jak jesteś), można ustawić catchpointy za wyjątkiem chcesz.

(rdbg) catch Exception 

np

6
+0

Hammertime (wzorowany na zachowaniu wyjątku Squeak) robi dokładnie to, co chcesz. – severin

+0

Tak, ale czas oczekiwania nie rozpoczyna się, jeśli kod natywny zgłasza wyjątek. – Geo

2

W rubymine 2.0.x przejść do Uruchom -> Pokaż punkty przerwania i kliknij „Ruby Breakpoints exception” kartę, a następnie dodać typ wyjątku jesteś zainteresowany ...

Nie powinno być coś podobnego w NetBeans oraz inne IDE Rubiego.

BTW, RubyMine jest NAJLEPSI!

Powiązane problemy