2017-10-11 10 views
1

Ich verwende Microsoft Minidump-Funktion, damit ich Abstürze in freigegebenen Programmen analysieren kann.Microsoft Minidump-Datei liefert nicht viele Informationen

https://msdn.microsoft.com/en-us/library/windows/desktop/ee416349(v=vs.85).aspx

Der Code ist ähnlich für diese Stackoverflow Frage zu beantworten:

How to write a sample code that will crash and produce dump file?

Normalerweise, wenn ich einen Absturz habe, kann ich die Crash-Dump-Datei in Visual Studio öffnen und es dauern wird, Ich bin zu der beanstandeten Zeile des Quellcodes, die die Problembehandlung dieser Probleme wirklich einfach macht.

Aber manchmal ist es nicht so einfach.

Ich habe eine Crash-Dump-Datei, wo ich nicht in der Lage bin, die problematische Source-Linie zu lokalisieren. Warum das? Welche nützliche Information kann ich aus dieser Speicherauszugsdatei erhalten? Irgendwelche Tipps, um die Nadel im Heuhaufen zu finden?

Hier ist was ich mache.

Ich überprüfe die Quellen für diese Version von Tag.

kopiere ich über die entsprechenden PDB-Dateien in den gleichen Ordner wie die Crash-Dump - Datei ist myprogram.exe.3140.dmp

ich dann öffnen Sie den Crash-Dump mit dem Compiler verwendet, um die exe, Visual Studio zu bauen 2012

ich dann einige nützliche Informationen finden Sie unter:

Letzte Schreibzeit 2017.10.10 15.28.52 Prozess-Architektur: x86 Ausnahmecode 0xC0000005 Ausnahmeinformationen Die Lauffläche versucht, zu lesen oder schreiben an eine virtuelle Adresse, für die es hat nicht den passenden Zugang. Heap Informationen Präsens

OS Version 6.1.7601

Module: myprogram.exe 1.7.41.0 myprogram.dll 1.1.0.27 etc

Dann klicke ich Debug mit india Nur

Ich bekomme dann den Dialog:

Unbehandelte Ausnahme bei 0x548BFFD5 in myprogram.exe.3140.dmp: 0xC0000005: Zugriffsverletzung ausgeführt Standort 0x548BFFD5.

Der aktuelle Stapelrahmen wurde in einem geladenen Modul nicht gefunden. Quelle kann für diesen Standort nicht angezeigt werden.

ich klicken Sie auf die Pause-Taste

Es sagt dann Rahmen nicht in Modul. Der aktuelle Stapelrahmen wurde in einem geladenen Modul nicht gefunden. Quelle kann für diesen Ort nicht angezeigt werden.

Ich klicke dann auf Ansicht Demontage Hyperlink und siehe:

548BFFD5 ?? ??

Was sind die Fragezeichen? ?? ??.Bedeutet das ein Problem mit einem Dangling-Zeiger? Etwas anderes?

+0

Ich bin nicht ganz überrascht, dass Sie keine Informationen erhalten: 'Zugriffsverletzung beim Ausführen von Ort 0x548BFFD5 <- klingt wie Sie versucht, Code auszuführen, der eigentlich nicht Code war. Möglicherweise haben Sie die Rückgabeadresse (durch irgendeine Form von UB) beschädigt und am Ende versucht, ein zufälliges Stück Speicher auszuführen. – Borgleader

Antwort

0

Die Fragezeichen bedeuten, dass die Daten an der Adresse 0x548BFFD5 (die Ihre Anwendung auszuführen versucht) nicht zu etwas Sinnvollem zerlegen.

Sie haben wahrscheinlich, wie Sie bemerken, einen ungeeigneten Zeiger oder versuchen, eine Funktion auszuführen, auf die ein Objekt verweist, das nicht mehr existiert. Oder Sie versuchen, einen Funktionszeiger auszuführen, der auf nichts zeigt.

Wenn Sie mit Symbolen kompiliert haben, können Sie möglicherweise den Aufruf-Stack/Stack-Trace aufrufen und feststellen, wo das Problem auftritt.

Verwandte Themen