MiniDumps als Debug-Informationsgewinn in Notsituationen
-
Wir haben hier eine Reihe alter Tools die seit dem Umstieg auf Windows Vista aus diversen Gründen nicht mehr funktionieren. Will hier nicht weiter auf das Warum eingehen, nur soviel: Alt, scheußlich, keine Doku, kein Logging oder Ähnliches, Originalprogrammierer nicht mehr zugegen.
Trotzdem sind diese Programme noch im Einsatz und Kunden klagen über Probleme auf Vista.
Jetzt kommen sie in der ORG drauf, dass Lösungen schon lange gefunden hätten werden müssen und wollen möglichst schnell die Programmierer mit Informationen über das Warum eines Absturzes informieren. Habe ich unter C++ Möglichkeiten (von mir aus auch durch externe Tools nachträglich hinzugefügt, oder was weiß der Teufel):
- Irgendeine Form von Stacktrace zu erhalten?
- Jede auftretende Ausnahme (wie in Java oder C#) abzufangen - also auch ein (*0)->doSmth();?
- Logging zu betreiben, dass auch bei Absturz alles noch auf die Platte schreibt?Performance spielt keine Rolle, nur ist es sehr wichtig möglichst viele Informationen zu erhalten und dabei möglichst wenig am Code ändern zu müssen - kennt sich ja kein Mensch mehr mit den Teilen aus *g*
<- Unschuldig für diesen bösen Code, aber beauftragt mit Lösungssuche.
MfG SideWinder
Edit: Titel geändert
-
hast du auch die quelltexte der programme, so dass du sie neu bauen kannst, oder nur die binaries? wenn ja: --> http://www.codeproject.com/debug/postmortemdebug_standalone1.asp

-
Ja, Source ist vorhanden und kann auch jederzeit neu zum Kunden ausgeliefert werden. Wenn es sein soll auch voll mit Debug-Informationen. Alles kein Problem.
Nur läuft beim Kunden kein MSVC, heißt: Nützliche Debug-Informationen beim Crash - scheint sich ja über die bei CodeProjekt erwähnte Methode abfangen zu lassen - zu uns zu bringen.
Schön wäre natürlich:
- Variablen und ihre Werte und nicht nur die ausgefüllten Register
- Genaue Funktion (Zeile und Datei?) in der das Programm Exit gemacht hatIst sowas auch über Minidumps erhältlich bei aktivierten Debug-Informationen oder hat es für solch schöne Informationen keinen Sinn sich in Minidumps näher zu beschäftigen?
MfG SideWinder
-
SideWinder schrieb:
Schön wäre natürlich:
- Variablen und ihre Werte und nicht nur die ausgefüllten Register
- Genaue Funktion (Zeile und Datei?) in der das Programm Exit gemacht hat
Ist sowas auch über Minidumps erhältlich bei aktivierten Debug-Informationen oder hat es für solch schöne Informationen keinen Sinn sich in Minidumps näher zu beschäftigen?müsste eigentlich gehen, wenn alle debug-infos da sind. also auch stack-trace (quelltext sowie assembler) und variableninhalte anschauen sollten möglich sein. probiers einfach mal aus...

-
Hi,
auch wenn das OT ist: Korrigier doch mal den Threadtitel, sonst findet den keiner wieder.
Gruß,
Simon2.
-
-
Sowas wie "access violation"s (NULL Pointer dereferenzieren etc.) kanns du mittels _set_se_translator in eine C++ Exception verwandeln.
Oder du kannst mittels __try __except einen Handler registrieren (ähnlich wie für C++ Exceptions mit try-catch, aber nicht ganz - is im MSDN recht gut dokumentiert).