2010-02-24 1 views
12

Gibt es eine Möglichkeit, die/ein Ruby-Debugger zu starten, wenn der Code eine Ausnahme auslöst, ohne dass ich den Code wie diese Verpackung:Gibt es eine Möglichkeit, den Ruby-Debugger bei Ausnahme zu starten?

begin 
    #do something 
rescue 
    debugger 
end 

Ich möchte es, dass in einer solchen Art und Weise haben, wenn die do something Teil löst eine Ausnahme aus, der Debugger wird gestartet. Es wäre nett, den Code nicht ändern zu müssen, um Rettungsblöcke überall zu beginnen.

Antwort

4

ich auf diese Seite gestoßen: post-mortem debugging. Doing this:

Debugger.start(:post_mortem => true) 

bringt mich, wo ich will.

+0

das schien bei mir früher zu funktionieren, aber vor kurzem keine freude mit gem 'debugger' :-( –

+0

@SamJoseph hast du einen weg gefunden, das mit dem 'debugger' fork des 'ruby-debug' gems zu tun? –

+0

@Sherwin noch nicht :-( –

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

Dies wird die ursprüngliche Ausnahme sowie Call-Debugger

2

wenn Sie mit Rubin-debug (und es sieht aus wie du bist) ausführen, Sie möchten, Schutzweiche für die Ausnahme festlegen.

(rdbg) catch Exception 

zum Beispiel

6
+0

Hammertime (nach dem Squeak-Ausnahmeverhalten) macht genau das, was Sie wollen. – severin

+0

Ja, aber hammertime startet nicht, wenn nativer Code eine Ausnahme auslöst. – Geo

2

In RubyMine 2.0.x gehen zu starten -> Ansicht Haltepunkte und klicken Sie auf „Ruby-Exception Haltepunkte“ -Reiter, dann fügen Sie den Typ der Ausnahme sind Sie interessiert ...

es etwas ähnliches in NetBeans sein sollte und andere Ruby IDEs schätze ich.

BTW, RubyMine ist das Beste!

Verwandte Themen