¿Cómo obtengo un volcado de emergencia?

Necesito obtener un volcado de un progtwig. ¿Como lo consigo? El progtwig está escrito en C #. ¿Qué es exactamente un volcado de emergencia? ¿Cuándo se crea? ¿Dónde se guarda? ¿Cómo lo leo?

Como dice C #, asumo que está usando la plataforma de Windows.

Un crashdump, o simplemente volcado, es la instantánea completa de la memoria y otra información relacionada del sistema de un proceso en un punto particular en el tiempo. Los vertederos se pueden usar para depurar lockings de progtwigs, lockings, pérdida de memoria y de recursos, y probablemente haya más problemas que no he enumerado aquí.

En el caso de fallas y lockings, la primera pieza de datos que desea obtener de un volcado de emergencia será la stack de llamadas. Esto indica el punto de un locking o el punto en el que una operación se bloqueó y nunca regresó, por lo que el progtwig se sienta y no hace nada.

Para fugas de recursos, varios volcados de memoria de un proceso pueden recostackrse durante un período de tiempo y examinarse para ver qué objetos en la memoria están creciendo más. Esto puede ayudar a reducir qué partes del código están causando la fuga. Para obtener más información sobre la depuración de problemas específicos, recomiendo este blog .

Hay algunas formas de capturar un archivo de volcado.

  1. Procdump ( http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx )
  2. Visual Studio 2010 ( http://msdn.microsoft.com/en-us/library/vstudio/fk551230(v=vs.100).aspx )
  3. WinDbg: no es malo, pero es más intimidante que otras herramientas

Con procdump puedes simplemente hacer:

c:\>procdump.exe -ma YourProcessName.exe 

El resultado de este comando será una instantánea de memoria completa de YourProcessName.dmp escrita en c: \. El modificador -ma especifica el volcado de una imagen de memoria completa. Si está depurando un locking o locking, es probable que pueda escapar sin el modificador -ma. Tenga en cuenta que sin el volcado total de memoria cuando vaya a examinar estructuras de datos, probablemente no tenga datos válidos. Sin el volcado total de memoria, todavía tendrá datos de la stack de llamada que a menudo es lo suficientemente bueno para lockings y cuelgues. Por lo general, el error en el costado del espacio del disco duro es bajo, así que recopile todo el volcado.

Procdump también tomará volcados automáticamente a intervalos de tiempo o cuando se cumpla una condición específica. Lea la documentación en el enlace de arriba para más información. Un cambio que recomendaría es -e .

 c:\>procdump.exe -ma -e YourProcessName.exe 

En lugar de escribir el volcado inmediatamente, solo lo escribirá cuando el progtwig falle.

Con Visual Studio 2010 puede adjuntar al proceso con el depurador y guardar un archivo de volcado. (Tenga en cuenta que cuando F5 depura su progtwig Visual Studio se adjunta automáticamente). Cuando su progtwig está en un “estado de corte” (punto de interrupción, excepción no controlada, locking), el menú Debug tendrá la opción de Save Dump As... Entonces puedes guardar ese vertedero donde quieras.

Como mencionó C #, es muy probable que recopile archivos de volcado administrados. La forma más fácil es usar Visual Studio 2010. Simplemente, abra el archivo de volcado que creó como lo haría con cualquier otro archivo y comience a depurar.

Sin embargo, si esa no es una opción, siempre puede usar VS2008 o WinDbg con las extensiones SOS. Sin embargo, recomiendo Visual Studio 2010, ya que las extensiones SOS y WinDbg en general tienen una curva de aprendizaje bastante empinada. Para obtener más información sobre SOS, consulte estos artículos de MSDN aquí y aquí .

Otra razón por la que recomiendo usar Visual Studio o procdump es que recostackrán el archivo de volcado que espera. Recomiendo apartarse de la herramienta “Crear archivo de volcado” del Administrador de tareas. La razón es que recogerá volcados de 64 bits de procesos de 32 bits que son demasiado difíciles de depurar.

En Windows XP puede crear un archivo de volcado con esta utilidad:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=e089ca41-6a87-40c8-bf69-28ac08570b7e&displaylang=en

Una vez instalado, navegue hasta el directorio de instalación y ejecute

 userdump PID 

desde la línea de comandos donde PID es el PID del proceso del que desea obtener un volcado de emergencia (puede encontrarlo en el administrador de tareas, pero es posible que necesite agregar la columna a la vista estándar).

Este archivo se puede abrir en Visual Studio; solo necesita asegurarse de tener los símbolos creados.

En Windows 7 simplemente haga clic derecho en el proceso en el Administrador de tareas y seleccione “Crear archivo de volcado”

Use ADPlus. Viene con las herramientas de depuración para Windows. Creará carpetas de volcados bajo su directorio de inicio. Puede analizarlos usando WinDbg luego.

Luke, un volcado de emergencia es una gran cantidad de datos relacionados con el estado de tu aplicación en el momento en que ocurrió el accidente, volcar significa registrar toda esa información en algún lugar, generalmente en un archivo de texto.

un enfoque básico es registrar toda la stack cuando ocurre una excepción para que pueda investigar más tarde y ver qué método falló y arrojar qué excepción, cuáles fueron los valores de los parámetros y demás. Esto no es realmente un basurero, pero ayuda mucho en muchos casos.

Había algo desarrollado recientemente por MS sobre volcados de aplicaciones y lockings de aplicaciones, creo que estaba relacionado con Windows 7 en realidad …

mira aquí: Recuperación y reinicio de la aplicación

http://msdn.microsoft.com/en-us/library/cc948909(v=vs.85).aspx

También puedes intentar usar WinDbg

http://www.windbg.org/

Un volcado de emergencia ocurre cuando el contenido de la memoria RAM y ciertas partes del procesador se copian en un archivo. Este archivo se crea en el punto crítico de un error y se puede usar para depurar el problema.

Esto funcionó para mí en el pasado. Es un atajo de teclado para bloquear el volcado en Windows.

 * Start Registry Editor. * Locate the following registry subkey: o HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\i8042prt\Parameters * On the Edit menu, click Add Value, and then add the following registry entry: o Name: CrashOnCtrlScroll Data Type: REG_DWORD Value: 1 * Exit Registry Editor and then restart the computer. 

http://vinaytechs.blogspot.com/2010/01/how-to-get-crash-or-hang-dump.html