Post Mortem Dump für ruby

OP #3070654
Lesenswert?

Was tun, wenn ein Ruby-Skript ohne Terminal-Anschluß abstürzt?

Ehe man irgendwelche Testausgaben einbaut und hofft, daß der Fehler 
irgendwann wieder auftritt, kann man das Programm mit einem Post Mortem 
Dump ausrüsten. Die Laufzeit-Kosten sind zwar nicht Null, aber auch 
nicht sehr groß.

So gehts:
1. Man fordert den Modul post_mortem_dump.rb an und aktiviert ihn:
1
require "post_mortem_dump.rb"
2
include Post_mortem_dump
3
enable_pmd(binding) if !Kernel.method_defined?(:debugger)
2. Man baut um den Aufruf des eigentlichen Codes einen Exception-Block:
1
begin
2
   main
3
rescue => detail
4
   set_trace_func nil
5
   post_mortem_dump("test.pmd", detail) if !Kernel.method_defined?(:debugger)
6
end
Stürzt das Skript ab, dann wird ein ausführlicher Speicherdump erzeugt.

1
post_mortem_dump.rb enthält den Code
2
test.rb             ist eine einfache Testumgebung
3
test.pmd            ist der Dump, der von test.rb erzeugt wird
Der Code ist bisher ausschließlich mit Ruby 1.8.7 getestet.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren