2010-07-11 24 views
5

Escribí una aplicación C# que funciona bien en XP pero se congela en Vista/7. Recibí un volcado de aplicaciones (archivo dmp) para analizar el problema. No entiendo cómo obtener el seguimiento de la pila en C# (ya que tengo, por supuesto, el código fuente). he cargado símbolos pero no parece cargar el código administrado, aquí está el seguimiento de la pila:analizar el archivo de volcado de aplicación C#

[email protected]() 
[email protected]() + 0xc bytes 
System.Windows.Forms.ni.dll!68bb8ea8() 
[Frames below may be incorrect and/or missing, no symbols loaded for System.Windows.Forms.ni.dll] 
System.Windows.Forms.ni.dll!68bb8ea8() 
System.Windows.Forms.ni.dll!68bb8997() 
System.Windows.Forms.ni.dll!68bb87e1() 
System.Windows.Forms.ni.dll!68b75931() 
[email protected]() + 0x33 bytes  
[email protected]() + 0x9f bytes 
mscorwks.dll!MethodDesc::CallDescr() + 0x15a bytes 
mscorwks.dll!MethodDesc::CallTargetWorker() + 0x1f bytes 
mscorwks.dll!MethodDescCallSite::CallWithValueTypes_RetArgSlot() + 0x1a bytes 
mscorwks.dll!ClassLoader::RunMain() - 0x39040 bytes  
mscorwks.dll!Assembly::ExecuteMainMethod() + 0xa4 bytes  
mscorwks.dll!SystemDomain::ExecuteMainMethod() + 0x416 bytes 
mscorwks.dll!ExecuteEXE() + 0x49 bytes 
[email protected]() + 0x98 bytes 
mscoreei.dll!71f455ab()  
[email protected]() + 0x227 bytes 
[email protected]() + 0x8 bytes 
[email protected]@12() + 0x12 bytes  
[email protected]() + 0x27 bytes 
[email protected]() + 0x1b bytes 

se agradecería cualquier ayuda.

Respuesta

5

Analizar archivos de volcado no es para cardíacos y requiere un poco de ejercicio. Una introducción excelente son los primeros capítulos de Advanced .NET Debugging que muestran cómo usar the Debugging Tools for Windows, la extensión del depurador SOS (necesaria para mapear el código administrado con llamadas nativas, que necesita aquí) que es part of the .NET SDK y SOSEX debugger extension que agrega un par de poderosas extensiones comandos a SOS.

Si nunca ha usado NTSD, WinDbg, SOS antes, o si los términos como Dirección virtual relativa no sonarán, le recomiendo leer los primeros capítulos de este libro. Requiere una inversión de solo unas pocas horas y, de repente, se abre un mundo totalmente nuevo para usted. No hace que la depuración sea fácil (casi nunca es así cuando los problemas son complejos), pero sí muestra el camino correcto para abordar este tipo de problemas.

Simplemente mirando el vertedero de arriba no nos dice mucho, me temo. Si no puede reproducir el error desde Visual Studio, NTSD o WinDbg es su amigo. Lo único que puedo decir desde aquí es que su punto de entrada es _CorExeMain desde mscoree.dll. Pero ese es el bootstrap de cada ensamblado de .NET. Más tarde, se carga un formulario y se ejecuta algún código, pero ¿qué es exactamente? Sin su archivo ejecutable, PDB y preferiblemente también sus archivos fuente, será difícil decir algo útil.

Cuestiones relacionadas