Automatisierte Ausnahmebehandlung

8

Ich habe mich gefragt, ob etwas existiert (in der Java-Welt), das in der Lage ist, einen Schnappschuss des aktuellen JVM-Zustands mit den folgenden Eigenschaften zu erstellen:

  • Mach es, während eine Ausnahme ausgelöst wird.
  • Erfassen Sie lokale Variablen, Argumente der Methode usw.
  • Legen Sie es in eine handliche Datei, die verwendet werden kann, um die Situation in Ihrem Quellcode zu extrahieren oder in einer IDE zu reproduzieren.

Die zwei ersten Features sind erforderlich (das dritte wäre toll). Und es muss für den produktiven Einsatz geeignet sein (Debugger haben also keine Chance).

Bevor ich das gefragt habe, habe ich das WWW (so lange wie möglich) durchsucht und einige Hinweise gefunden:

  • Cajoon Interceptor : Wie in Dzone-Post gesagt , es ist ein passiver JVM-Agent, der die drei Anforderungen erfüllt! Aber es hat zwei Nachteile: Sie müssen dafür bezahlen und die Seite ist leer (vielleicht gibt es keine Chance, etwas zu bezahlen).
  • AviCode Intercept Studio : Cajons .NET-Entsprechung. Nur um einen Einblick zu geben.
  • JavaFrame : Ok, es ist ein Tweet, aber es zeigt auf ein verfügbares SVN Repo welches den Quellcode hat (unter MIT Lizenz) eines JVM-Agenten, der gut aussieht (ich werde es versuchen).

Vielleicht suche ich nach einer nicht existenten Lösung? Es ist nicht dringend, aber ich hatte diese Idee für ein Projekt und es wäre großartig, diesen "unbekannten" (?) Pfad zu erkunden und etwas wirklich zu bekommen.

Es scheint klar zu sein, dass es ein JVM-Agent wäre (Ausnahmeereignis von JVMTI, für Beispiel ).

Endlich möchte ich den folgenden Abschnitt aus dem Wikipedia-Artikel zur Ausnahmebehandlung hervorheben:

  

In Laufzeit-Engine-Umgebungen wie z   Java oder .NET, gibt es Tools, die   an die Laufzeit-Engine anfügen und alle   Zeit, die eine Ausnahme von Interesse ist   tritt auf, sie protokollieren das Debugging   Informationen, die im Speicher vorhanden waren   die Zeit, zu der die Ausnahme ausgelöst wurde   (Aufruf von Stack- und Heap-Werten) Diese   Werkzeuge werden als automatisierte Ausnahme bezeichnet   Tools zum Behandeln oder Error Interception   und Informationen zur "Ursache" bereitstellen   für Ausnahmen.

Das ist die Idee. Ich hoffe, jemand kann mir einen Einblick geben oder vielleicht wird sich jemand in Zukunft von diesem bescheidenen Beitrag inspirieren lassen:)

Danke!

    
Dario 16.12.2008, 20:33
quelle

4 Antworten

2

Ich schaue JavaFrame an und es scheint ein guter Ausgangspunkt zu sein. Installieren Sie einfach Apache Ant, führen Sie ant im javaframe-Verzeichnis aus und starten Sie die Testsuite (innerhalb des Testverzeichnisses) mit:

%Vor%

Es wird keine lokale Variable erhalten, aber es wird versucht. Also, wie gesagt, es kann ein Ausgangspunkt sein. Ich hoffe, dass ich mehr über seine Verwendung erfahren kann, aber keine Zeit und keine Dokumentation (es gibt viele Projekte mit dem Namen JavaFrame) sind schlechte Umstände.

Vielleicht kann es eines Tages wieder getan werden. Wieder ja. Es gab Cajoon, es sah vielversprechend und glänzend aus, aber seine Website ist nicht verfügbar und es gibt keine Spur von einem herunterladbaren Glas, das man ausprobieren kann.

Danke an alle!

PD .: Nur als Referenz, einige Links, die ich bei der Recherche gefunden habe:

Dario 18.12.2008, 19:21
quelle
1

Vielleicht möchten Sie sich die Arbeit ansehen, die NetBeans in Bezug auf die automatische Nutzungsprotokollierung getan hat: Ссылка .

Was das Auslagern lokaler Variablen betrifft, würde ich mir vorstellen, dass Sie einfach einen Debugger verwenden könnten, wie den, den bajafresh4life erwähnt.

    
Zian Choy 17.12.2008 01:07
quelle
1

Vielleicht könnte es mit AspectJ gemacht werden?

    
GvS 17.12.2008 13:30
quelle
0

Nicht sicher, ob dies in einer Produktionsumgebung möglich ist, aber es gibt den Omniscient-Debugger:

  

Was wäre, wenn Ihr Debugger "in die Vergangenheit gehen könnte"? Würde das das Debuggen erleichtern? Durch einfaches Aufzeichnen aller Variablenzuordnungen ist es möglich, dies im Wesentlichen zu tun. Dies ist die grundlegende Idee für das allwissende Debugging. Der erstaunliche Teil ist, dass auf diese Weise signifikant große Programme debuggt werden können - Ant, JUnit, der Debugger selbst.

Ссылка

    
bajafresh4life 16.12.2008 20:46
quelle