2008-11-12 15 views
7

Actualmente llamamos MiniDumpWriteDump con los indicadores MiniDumpNormal | MiniDumpWithIndirectlyReferencedMemory. Eso funciona bien para compilaciones internas en la configuración de depuración, pero no proporciona tanta información como necesitamos en la configuración de la versión.¿Qué configuraciones debo usar con Minidumps?

En Release, los datos del minivolcado contienen suficiente información de la pila para que el depurador averigüe en qué parte del código se produjo la falla, pero no otros datos. No me refiero simplemente a que faltan variables locales debido a que están optimizadas, como era de esperar en una compilación de versión. Es decir, no hay nada útil excepto la pila de llamadas y la línea de código actual. Sin registros, sin locales, sin globales, sin objetos apuntados por los lugareños - nada. Ni siquiera tenemos 'esto' que nos permita ver el objeto actual. Ese fue el punto de usar MiniDumpWithIndirectlyReferencedMemory - debería haber incluido la memoria a la que hacen referencia los locales y las variables de la pila, pero parece que no.

¿Qué banderas deberíamos usar en su lugar? No queremos usar MiniDumpWithFullMemory y comenzar a generar volcados de 600MB +, pero con gusto expandiríamos los volcados algo más allá de los 90KB que tenemos actualmente si eso significara obtener datos más útiles. Tal vez deberíamos estar usando MiniDumpWithDataSegments (globales) o ...?

+0

¿Qué tipo de excepción se produjo al bloquear su programa? – HelloWorld

Respuesta

0

WinDBG utiliza los siguientes banderas para una .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 

sugiero que cambie MiniDumpWithFullMemory por MiniDumpWithIndirectlyReferencedMemory.

+0

Los indicadores son [específicos de la versión] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms680519%28v=vs.85%29.aspx). Asegúrese de tener una nueva versión de dbghelp.dll que admita la bandera –