Trace nach Programmabsturz ins Log schreiben.

Gast #955428
Lesenswert?
• ▲
▼
Hi!

Ist es eigentlich irgendwie möglich, ein Programm bei einem Absturz 
einen Call-Backtrace in ein Log-File schreiben zu lassen?

Ein Handler für nicht behandelte Exceptions lässt sich, so weit ich 
weiß, mit  SetUnhandledExceptionFilter einrichten.
Nur, gibt es dann auch eine Möglichkeit die momentan aufgerufenen 
Funktionen auszugeben?
Gast #955626
Lesenswert?
• ▲
▼
Das Ziel ist, dass der User nur eine einzige Datei einsenden muss. In 
der dann sowohl die normalen Debugmeldungen des Programms, als auch der 
Stackdump drin stehen. Wenn ich das hinbekomme.

Die dbghelp.dll schaut viel versprechend, auch auch relativ kompliziert 
aus. Ich versuch mal, ob ichs damit hin bekomme.


Falls jemand noch Hinweise hat, wie man die Aufgabe unter Linux lösen 
könnte, wäre ich auch sehr dankbar, da das Programm auf beiden 
Plattformen läuft.
Gast #958144
Lesenswert?
• ▲
▼
Hab einen interessanten Artikel gefunden, in dem die dbghelp.dll 
verwendet wird. Der Code is sehr einfach anzuwenden. Wen's interessiert:

http://www.codeproject.com/KB/threads/StackWalker.aspx

Wie ist das nun mit der Weitergabe der dll?
Wie sieht die rechtliche Situation aus, darf ich die Datei mit meinem 
Programm weiter geben?
Muss ich eine zum Betriebssystem passende Version mitliefern? Also 
müsste ich dann mehrere Versionen mitliefern. Dann müsste ich mir was 
ausdenken, wie ich das regel, damit die richtige verwendet wird.
#958190
Lesenswert?
• ▲
▼
Peter wrote:
> Das Ziel ist, dass der User nur eine einzige Datei einsenden muss. In
> der dann sowohl die normalen Debugmeldungen des Programms, als auch der
> Stackdump drin stehen. Wenn ich das hinbekomme.

Für Windows: DrWatson macht das alles automatisch.

> Die dbghelp.dll schaut viel versprechend, auch auch relativ kompliziert
> aus. Ich versuch mal, ob ichs damit hin bekomme.

Wenn das Programm mit MS-Compilern erzeugt wurde und du die 
Debug-Symbole, also die zugehörige .pdb-Datei und die Quellen aufhebst, 
kannst du den Dump amschließend in WinDbg laden und analysieren. Evtl. 
bietet auch Visual Studio solche Möglichkeiten - such mal danach...

Auf jeden Fall muß man nichts selbst programmieren, um die Informationen 
incl. Variablenwerte und Aufrufkette zu analysieren.
Gast #958439
Lesenswert?
• ▲
▼
das selber programieren ist nicht das Problem. Das läuft bei mir bereits 
wunderbar und schreibt den den Call-Stack ins log file.

Was mich im Moment noch beschäftigt, ist, dass nicht wirklich verstehe, 
was in der Microsoft EULA zum Redistributable Code steht, welche 
Bedingungen da genau einzuhalten sind.

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