Jeden Crash abfangen
-
Ein fremdes Programm wird um eine DLL erweitert. Diese soll möglichst alle Crashes abfangen.
Das Problem ist, dass sowohl beim normalen Start als auch beim normalen Beenden des Programms ein paar Exceptions fliegen...
Ich warte also ein wenig, bevor ich AddVectoredExceptionHandler aufrufe.
Beim Schließen des Programms rufe ich dann RemoveVectoredExceptionHandler auf, damit mein VecHandler nicht mehr aufgerufen wird, wird er aber trotzdem, einige Sekunden nach dem Remove-Aufruf.
-
Jochen Kalmbach schrieb:
Bei mir funktioniert Dein Beispiel wunderbar...
Warum bei mir nicht
Auch nicht mit printf, es erscheint garnix, gleich WER. Habe nix spezielles installiert, keinen AV oder sonstigen Kram...
-
Und warum bitte machst Du das nicht mit WER?
-
Weil ich dann keine (sehr wichtigen crashrelevanten) Logs mehr schreiben kann.
Zu dem RemoveVectoredExceptionHandler funktioniert nicht: Sorry, mein Fehler. AddVectoredExceptionHandler wurde danach nochmal durch eine HookInit-Funktion aufgerufen (Init bei Beendigung des Programms, naja...).
-
Kann denn ein Prozess verlässlich (und möglichst sofort, also ohne polling) erkennen, ob bei einem anderen Prozess WER gestartet hat?
-
Jeden Crash abfangen
Wie waere es mit: keinen Crash verursachen. Mache ich seit Jahren, funktioniert gut.
-
Hi schrieb:
Ein fremdes Programm wird um eine DLL erweitert. Diese soll möglichst alle Crashes abfangen.
-
Wäre es nicht intelligenter den Hersteller des Games um die Rausgabe der Sourcecodes zu bitten damit du den Server fixen kannst? Solche Hilfsangebote nehmen die doch bestimmt mit Kusshand an und vielleicht stellen die dich sogar an, wenn die sehen das du ein fähiger Mann bist.
-
An application can use Application Recovery and Restart (ARR) to save data and state information before the application exits due to an unhandled exception or when the application stops responding. The application is also restarted, if requested.
-
Hmm, ARR gibts leider nicht für WinXP/Server2003, das soll aber auch unterstützt werden.
Außerdem müsste man WER manuell weggklicken, um zu loggen (so wie ich das verstanden habe). Währenddessen würde man den Server weiterhin in der globalen Serverliste sehen (weil kein "server close" an den master gesendet wird), und Spieler würden versuchen zu verbinden -> timeout. Nicht so schön.@reani
Ne, Take2 ist stur. Haben da schon von mehreren Seiten höflich angefragt. Außerdem lässt sich der Server nicht so leicht fixen, es gibt sehr viele "Schwachstellen". Wichtiger wäre es mir, bei jedem Crash sofort einen eigenen Log schreiben zu können (und dann gleich terminate/restart).