Kennt jemand eine Funktion zum Konvertieren der von GetExceptionInformation () zurückgegebenen EXCEPTION_POINTERS-Struktur in eine Zeichenfolge, die ich protokollieren kann?
Ich möchte nicht meine eigenen rollen, wenn es schon fertig ist.
BEARBEITEN: Im Grunde genommen habe ich die __try {} __except () {} Blöcke hinzugefügt, damit die App bei einem kritischen Fehler ordnungsgemäß fehlschlägt. Während ich dabei bin, versuche ich so ausführlich wie möglich eine Fehlermeldung zu protokollieren, um das Problem zu finden, das wir lösen müssen. Im Idealfall möchte ich den Dateinamen ausdrucken und die Zeile als fehlgeschlagen markieren, aber ich bezweifle, dass das möglich ist, also hoffe ich, alle Ausnahmeinformationen in der Hoffnung, dass wir so nah wie möglich kommen können, auszugeben um die genaue Ursache des Problems ausfindig zu machen.
Es gibt keine solche Funktion, da Sie private Symbole benötigen, um etwas Sinnvolles zu schreiben. Die dbghelp.dll hilft mit einigen dieser (insbesondere die StackWalk-Funktion und seine 64-Bit-Variante)
Was möchten Sie aus dem Exception-Datensatz herausholen, um ihn in das Protokoll aufzunehmen? Nur der Ausnahmecode? Der Registerkontext? Der Stapel zurückverfolgen?
BEARBEITEN: Auch wenn Sie nichts tun, aber registrieren Sie sich für Windows Fehlerberichte , Sie können einfach den großartigen Service von Microsoft nutzen und die Abstürze nach Beliebtheit zurückbekommen. Wenn Sie können, ist das die bei weitem beste Methode, um Crash-Dumps zu speichern.
Es gibt nicht viel, Sie werden nur an dem Ausnahmecode und der Adresse interessiert sein. Wenn die Ausnahme eine EXCEPTION_ACCESS_VIOLATION ist, möchten Sie auch die ersten beiden ExceptionInformation-Werte ausgeben. Die erste zeigt die Operation an (0 = lesen, 1 = schreiben, 8 = Datenausführungsverhinderung), die zweite gibt die Fehleradresse an.
Tags und Links c++ windows visual-c++ winapi exception