2008-11-12 23 views
7

Zur Zeit rufen wir MiniDumpWriteDump mit den MiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory Flags. Das funktioniert gut für interne Builds in der Debug-Konfiguration, gibt aber nicht so viele Informationen wie in der Release-Konfiguration.Welche Einstellungen sollte ich mit Minidumps verwenden?

In Release enthalten die Minidump-Daten genügend Stack-Informationen für den Debugger, um herauszufinden, wo im Code der Fehler aufgetreten ist, aber keine anderen Daten. Ich meine nicht einfach, dass lokale Variablen fehlen, weil sie optimiert sind, wie man es von einem Release-Build erwartet - ich meine, es gibt nichts nützliches außer dem Call-Stack und der aktuellen Code-Zeile. Keine Register, keine Einheimischen, keine Globals, keine Objekte, auf die die Einheimischen zeigen - nichts. Wir bekommen nicht einmal "das", was uns erlauben würde, das aktuelle Objekt zu betrachten. Das war der Punkt der Verwendung von MiniDumpWithIndirectlyReferencedMemory - es sollte Speicher enthalten, auf den von Einheimischen und Stack-Variablen verwiesen wird, scheint aber nicht.

Welche Flags sollten wir stattdessen verwenden? Wir wollen nicht MiniDumpWithFullMemory verwenden und 600MB + Dumps generieren, würden aber gerne die Dumps etwas über die 90KB hinaus erweitern, die wir momentan bekommen, wenn es darum geht, nützlichere Daten zu bekommen. Vielleicht sollten wir MiniDumpWithDataSegments (globals) oder ... verwenden?

+0

Welche Art von Ausnahme ist aufgetreten, um Ihr Programm zu stürzen? – HelloWorld

Antwort

0

WinDbg verwendet die folgenden Flags für ein .dump /ma:

0:003> .dumpdebug 
----- User Mini Dump Analysis 

MINIDUMP_HEADER: 
Version   A793 (62F0) 
NumberOfStreams 13 
Flags   41826 
       0002 MiniDumpWithFullMemory 
       0004 MiniDumpWithHandleData 
       0020 MiniDumpWithUnloadedModules 
       0800 MiniDumpWithFullMemoryInfo 
       1000 MiniDumpWithThreadInfo 
       40000 MiniDumpWithTokenInformation 

Ich schlage vor, Sie MiniDumpWithFullMemory durch MiniDumpWithIndirectlyReferencedMemory ersetzen.

+0

Die Flags sind [versionsspezifisch] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms680519%28v=vs.85%29.aspx). Stellen Sie sicher, dass Sie eine neue Version von dbghelp.dll haben, die das Flag unterstützt –

Verwandte Themen