debug infos bei crash anzeigen
-
moin,
bin mir nicht sicher, ob dies das richtige forum für meine frage ist. falls nicht, bitte direkt verschieben oder bescheid sagen.
ich möchte, dass die firmeninternen anwender meines mit c++ auf visual studio pro 10 geschriebenen programms mir bei crashs fehlerlogs schicken können. dazu verteile ich in der installationsdatei auch die .pdb dateien und habe bisher komplett visual studio auf den rechner installiert, damit der debugger die korrekten quellcodestellen mit dem fehler anzeigt.
man abgesehen davon, dass ich natürlich keine x lizenzen für visual studio habe, ist es sicherlich völlig übertrieben, das ganze visual studio zu installieren.
mit welchem tool kann ich
a) einfach nur entweder die quellcodestelle auf dem anwendungsrechner anzeigen lassen, damit mir der anwender diese infos schicken kann?
oder noch besser
b) bei crashs alle möglichen infos dazu in eine logdatei speichern?ich benutze wxWidgets.
danke!!!
-
Lass das. Speichere lieber einen Minidump und analysiere den. Das ist weitaus sicherer als den gecrashten Prozess noch irgendwas machen zu lassen.
-
kann ich den "minidump" denn irgendwie z.b. in das programmverzeichnis als textdatei automatisch speichern? wie bekomme ich überhaupt einen minidump, wenn dieser nicht ab und zu aus einer winwidgets debug alert mitteilung besteht, die ich den anwender per screenshot speichern lasse?
-
1. Ein Minidump ist eine inäre Datei, die Dir sofort das Debuggen erlaubt.
Warum willst Du eine Textdatei? Öffne die DMP Datei im VS und sage "Ausführen".
Siehe da, Du siehst alles was Du brauchst. Callstack, lokale Varioablen etc.
2. Siehe MiniDumpWriteDump. Wenn Du nach "Create minidump crash" suchst findest Du genug code...
http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx
etc. pp.
3. Theoretisch kanst Du in einem Testfeld das sogar im System machen:
http://blog.m-ri.de/index.php/2011/01/13/minidumps-ganz-einfach/
4, Wenn Du einen ASSERT als Minidump willst, dann insruiere Dein FRamework keinen ASSERT anzuzeigen sondern zu crashen. Das geht für die MS CRT ganz einfach. Dann erzeugt jeder ASSERT sofort ein MinidumpIch verstehe nicht für was Du eine Textdatei benötigst?
-
ah, vielen dank, das klingt super!
ich brauche nicht wirklich eine textdatei, sondern nur eine möglichkeit, dass mir anwender in meiner abwesenheit die infos speichern können. bisher hatten sie dann die quellcodeangaben aus dem vs debugger in eine textdatei kopiert. deshalb dachte ich, das könnte bestimmt auch automatisch geschehen.
mit einer dmp datei, die ich in vs öffnen kann, wird es sicherlich auch gehen, wahrscheinlich sogar besser!
ich kann deine tips erst in eine paar tagen testen und gebe dann nochmal feedback.
danke!
-
Speicher einfach die Dump Datei mit einem Timestamp (Datum/Uhrzeit) in Namen ab.
Dann muss Dir der Anwender nur noch saen was er gemacht hat.