# An Elite: Breakpoint JIT Serializable



## nocturn (12. Nov 2009)

Moinsen,

Wenn ich in eine Fehlersitouation komme möchte ich die ausführung unterbrechen, einen coredump erstellen und auf einem anderen System fortfahren.

Wie das Speichern/Laden bei Spielen.

Gibt es da schon technologien/erfahrungen?

Hintergrund:
ich übersetze gerade ein Programm nach Java.
Jetzt kommt es zu Situationen in denen eine Variable undefiniert verwendet werden soll.
Böse wie weis-ich-was! Ich will also zum verantwortlichen / seinem vertretter und fortfahren.


----------



## FArt (12. Nov 2009)

Ich glaube, ich verstehe nicht was du willst...

Du willst die kompletten Laufzeitdaten persistieren und dann...??? Von was eigentlich??? Von einer Enterprise-Applikation? Was ist eine "undefinierte Variable" und wohin fährt der Vertretter?

Fragen über Fragen...


----------



## nocturn (13. Nov 2009)

1. von der unterbrochenen ausführung.
2. undefiniert ist zwar deklariert aber ohne wert (grundbegriffe informatik)
3. der vertretter fährt nicht. lies zuerst den thread bitte (bemerke "an elite:" ^ ^ ).


----------



## maki (13. Nov 2009)

1. "Elite" ist ein Begriff den pubertierende Teenager verwenden, ist eigentlich nicht unser Klientel
2. FArt einer derjenigen die hier am meisten bei Fragen zu JEE etc. beisteuern, liegt wohl an seiner Erfahrung 
3. Deine Frage/Beschreibung ist wohl nicht ernst gemeint, oder? Hört sich an als ob du einerseits nach Exceptions fragst, andererseits scheint dir nicht klar zu sein dass der Compiler einen Fehler anzeigt sobald undefinierte Variablen genutzt werden sollen. Gehört beides zu den absoluten Java Grundlagen.

Entweder du beschreibst also dein Problem richtig, und/oder du versuchst zumindest wie ein "Erwachsener" zu schreiben.


----------



## Noctarius (13. Nov 2009)

Ich denke du willst einen Coredump der kompletten JVM zum Zeitpunkt des Absturzes, richtig?

Mit gewissen Tools lässt sich sowas erstellen, aber rein zur Datenanalyse. Die JVM aus einem Coredump wiederherstellen kann man meines Wissens nach nicht.


----------



## FArt (13. Nov 2009)

Wenn die VM wirklich aufgibt, dann schreibt sie automatisch einen Dump: eine Datei, die irgendwas mit err_pid heißt.

Wenn du die komplette Laufzeitinformation schreiben möchtest, dann gibt es dafür keine generische Lösung. Ein Spielstand speichert auch nur wichtige Parameter und restauriert dann daraus den alten Zustand. Einen Zustand, ähnlich wie der Snapshot eines Profilers, kann man sicher irgendwie über die MBean-Schnittstelle morderner VMs erhalten. Das ist aber rein informell, Instanzen können daraus nicht erstellt werden.

Wenn du nach einem beliebigen Fehler die Ausführung der Applikatiion beenden möchtest und woanders fortführen möchtest (von Anfang an?) dann ist das eine seltsame Anforderung, gerade im Bereich der EE unnötig. Fehler werden behandelt, die Ausführung nur bis zu einem gewissen Punkt zurückgerollt. Die Applikation läuft weiter. Ausfallsicherheit bekommst du durch Clustering. Fehleranalyse kannst du über Logging betreiben. Weitermachen, als wäre nichts gewesen, kannst du vergessen.

Bitte entschuldige, dass ich in vollständigen und verständlichen deutschen Sätzen antworte, ich hoffe du verstehst sie trotztdem. Ich jedenfalls kann mit deiner Hintergrundbeschreibung und deinen weiteren "Erläuterungen" immer noch nichts anfangen.


----------



## nocturn (13. Nov 2009)

Hi.
@maki
Hast recht, ab jetzt "profis" oder "erfahrene" (elite war nur ein klein wenig kürzer).
Nun leider meinte ich das doch ernst. Undefiniert im sinne bsp.: short k=(Short)null;

Hier kommt es in diese "NullPointerException" sitouation die ich meine. 
Hier möchte ich ein Break machen, zum codeverantwortlichen rennen(Oder falls diese person im Urlaub ist zu seinem abgesprochenen Vertretter).

Ich war blos ungeduldig. Etwas stressig derzeit.

@noctarius
Danke, diese Anwort habe ich gesucht (auch wenn sie mir nicht gefällt).

@FArt
Sorry vor allem an dich, ich war nicht wegen dir patzig. Meine frage wurde von Noctarius erledigt. 
Ich werde mal zusehen ob ich mit BCEL nicht sowas gemodelt bekomme.

LG noc


----------



## FArt (13. Nov 2009)

nocturn hat gesagt.:


> Nun leider meinte ich das doch ernst. Undefiniert im sinne bsp.: short k=(Short)null;
> 
> Hier kommt es in diese "NullPointerException" sitouation die ich meine.
> Hier möchte ich ein Break machen, zum codeverantwortlichen rennen(Oder falls diese person im Urlaub ist zu seinem abgesprochenen Vertretter).


??? 
Diese Information steckt doch im Stacktrace. Logging wäre auch nicht schlecht. Das ist in der Regel absolut ausreichend. Wie dir da BCEL helfen soll, verstehe ich auch nicht. Und warum ist diese Frage in "Allgemeines EE" eingestellt?

Bist du sicher, dass das nur Stress ist? Wenn nicht, dann schick mir mal etwas von dem Zeug rüber, ich würde mir auch mal gerne so eine Tüte drehen... ;-)


----------



## Noctarius (14. Nov 2009)

Ich denke auch, dass ein vernünftiges Logging (im schlimmsten Fall mit Thread.setUncaughtExceptionHandler und alles wegloggen) inklusive Stacktrce reichen muss. Dafür gibt es die Stacktraces. Und anhand eines Stacktraces zu finden wo die Variable Null bekommen hat sollte für jeden Programmierer witzlos sein. Sonst würde ich geziehlt anfangen das Team zu ersetzen.


----------



## maki (14. Nov 2009)

Bei OutOfMemoryExceptions durch die die VM stirbt, nutzt logging leider nicht mehr soviel, aber ansonsten kann man damit viel rausfinden imho.
Für NPE reicht Logging meist aus, dazu der Debugger und falls möglich der ein oder andere Unittest.


----------



## nocturn (17. Nov 2009)

In vernetzten Systemen mit über tausend Entwicklern kommt man halt in die Sitouation dass Funktionen verbindlich sein müssen und nicht jede Sitouation getestet werden kann.
(Wenn man zum beispiel eine SQL Transaction commiten muss weil diese nur zu einer bestimmten Größe verfügbar ist).

Wenn dann kann solch ein Problem nur auf Bytecodebasis gelöst werden - deswegen BCEL.

@FArt: Selbstverständlich gehören schichten und transaktionsbasierte Systeme in Java zu JavaEE. Vieleicht hilft dir eben weniger tüten drehen.

@Noctarius: Deine erste Antwort war sehr Konstruktiv, das Fand ich gut. Dass du die unverschämtheit besitzt die Personalbesetzung zu kritisieren sprengt den Rahmen dieser Internetseite bei weitem. Halte deine anmaßenden persönlichen und demoralisierenden Angriffe bitte aus deinen Artikeln raus.


----------



## FArt (17. Nov 2009)

@nocturn
Hooo Brauner...



> In vernetzten Systemen mit über tausend Entwicklern kommt man halt in die Sitouation dass Funktionen verbindlich sein müssen und nicht jede Sitouation getestet werden kann.


Das hat nichts mit der Anzahl der Entwickler zu tun. Das liegt in der Natur der Sache. (Wobei ich raten muss, was du mit "verbindlichen Funktionen" meinst.



> Wenn man zum beispiel eine SQL Transaction commiten muss weil diese nur zu einer bestimmten Größe verfügbar ist


??? 
Eine Transaktion ist nur zu einer bestimmten Größe Verfügbar? Was soll das bedeuten?



> Selbstverständlich gehören schichten und transaktionsbasierte Systeme in Java zu JavaEE.


Nein, nicht zwangsläufig. Abgesehen davon hast du in keinster Weise auf diesen Umstand Bezug genommen.

Du solltest mal kurz innehalten anstatt hier die Leute anzublöken. Noctarius hat völlig Recht. Wenn es Vorgaben für Konzepte, Codestyle, Entwicklung, Testing gibt und diese über Reviews überprüft werden, dann ist das ein gangbarer Weg die Qualität des Codes zu vebessern. Schulungen und Workshops sind auch nicht schlecht. 
Evtl. kann man mit Findbugs auch automatisierte Überprüfungen über den Code machen. Aber Leute, die das nicht auf die Kette kriegen, wirst du auch mit diesen lustigen Toolbestrebungen nicht verbessern können.


----------



## Noctarius (17. Nov 2009)

nocturn hat gesagt.:


> @Noctarius: Deine erste Antwort war sehr Konstruktiv, das Fand ich gut. Dass du die unverschämtheit besitzt die Personalbesetzung zu kritisieren sprengt den Rahmen dieser Internetseite bei weitem. Halte deine anmaßenden persönlichen und demoralisierenden Angriffe bitte aus deinen Artikeln raus.



höhöhö  Ich denke FArt hat alles dazu gesagt


----------

