que files debug .net windbg crash-dumps minidump

files - ¿Cómo realizo un buen volcado de emergencia para.NET?



debug dump files que es (1)

Capturé un volcado de mi aplicación .NET de 32 bits que se ejecuta en un sistema operativo Windows de 64 bits. Durante el análisis, alguien descubrió que tengo un volcado de 64 bits y me dijo que no es posible analizar este vuelco debido a una falla incorrecta.

Al usar el Administrador de tareas de Windows para crear el volcado, no sabía que estaba haciendo algo mal. Esto siempre funcionó para sistemas operativos de 32 bits.

¿Cómo puedo hacer un buen volcado de .NET, especialmente con la bitness correcta?


¿Por qué es importante el bitness aquí?

La bitness es importante para las aplicaciones .NET por los siguientes motivos:

  • se necesita una biblioteca DAC (control de acceso a datos) (mscordakwks.dll) del bitness correcto. No hay DAC cross-bitness disponible.
  • el depurador necesita poder cargar la extensión de depuración SOS del bitness correcto

No es posible convertir un volcado de 64 bits a 32 bits, aunque en teoría debería contener toda la información necesaria.

Si te sientes con suerte, también puedes probar algunas de las instrucciones de todos modos

¿Cómo detectar la bitness de una aplicación?

Si no conoce el bitness, puede descubrirlo así:

El Administrador de tareas de Windows 7 muestra *32 en los procesos:

En el administrador de tareas de Windows 8, vaya a la pestaña Details y agregue una columna llamada Platform :

Visual Studio muestra el bitness cuando se conecta al proceso:

Process Explorer se puede configurar para mostrar la columna Image Type :

Herramientas

Programas que detectan bitness automáticamente:

Herramientas que capturan un volcado con bitness específico:

  • 64 Bit: administrador de tareas predeterminado en un sistema operativo de 64 bits
  • 32 Bit: Administrador de tareas ejecutado desde% windir% / SysWOW64 / taskmgr.exe en un sistema operativo de 64 bits
  • 64 bit: ProcDump se ejecuta con el -64 línea de comando -64
  • 32 bits: versión WinDbg x86
  • 64 bits: versión WinDbg x64
  • 32 bits: DebugDiag versión x86
  • 64 bits: versión DebugDiag x64
  • 32 bits: versión ADPlus x86
  • 64 bits: versión ADPlus x64

Simplemente elija el bitness según su aplicación, no de acuerdo con el sistema operativo.

¿Por qué la memoria es relevante aquí?

Para .NET necesita un volcado total de memoria, de lo contrario no podrá determinar el contenido de los objetos. Para incluir memoria completa, haga lo siguiente:

  • en WinDbg, especifique /ma al hacer .dump
  • en Process Explorer , elija "Crear volcado completo" (aunque técnicamente, el resultado sigue siendo un minivolcado)
  • en ProcDump , aplique el -ma línea de comando -ma
  • en Visual Studio, elija "Miniduque con montón"
  • El Administrador de tareas siempre creará un volcado con memoria completa
  • Para Windows Error Reporting LocalDumps establece DumpType en 2

Instrucciones de Visual Studio

Descubrí que muchos desarrolladores ni siquiera saben que Visual Studio puede crear volcados. La razón probablemente sea que el menú es invisible durante mucho tiempo. Estos son los pasos:

  • Iniciar Visual Studio: el menú es invisible
  • Adjuntar a un proceso: el menú sigue siendo invisible
  • Break: el menú se vuelve visible (encuéntralo en Depurar / Guardar volcado como)

¿Por qué descargas de 64 bits de aplicaciones de 32 bits?

Probablemente solo para depurar la capa WoW64.