Pregunta

Tengo una aplicación de formularios de Windows (.NET 4) que se ejecuta bien en mi máquina de desarrollo, pero se bloquea en otras dos máquinas de prueba.Puedo cargar el minidump que crea en VS2010.

Eligiendo "depurar con las líderes mezcladas" a aparentemente interminables (maté a DevenV después de unos 20 minutos) abuso de la CPU por Visual Studio.

Cuando se "depuré con solo nativo", no puede encontrar la fuente (aunque haya reflejado la fuente en la misma carpeta que en la máquina de prueba).Simplemente dice:

excepción no controlada en 0x793f5b8c en YourWinApp .exe.hdmp: 0xc0000409: 0xc0000409.

y luego me muestra

Llamada Pila Ubicación: CLR.DLL! 793F5B8C ()

¿Cómo averigua qué está causando que la aplicación se bloquee?¿Puedo tomar un cierre completo, mientras que se muestra el cuadro de diálogo "Notificar a Microsoft", y eso ayudaría?

¿Fue útil?

Solución

Se suponía que la depuración de Minidump se mejoraba con comodidad en VS2010. Aún no he visto una gran cantidad de pruebas para ello, todavía, la depuración de modo mixto se ve tan incómodo como lo fue antes cuando hice algunas pruebas rápidas. Sin embargo, no te tomes mi palabra. Sin embargo, sin embargo, sin embargo, nunca le va a mostrar una pila de llamadas administradas.

abordar esto en la fuente. Escriba un controlador de eventos para AppDomain.CurrentDomain.unHandledException y regístrelo en su método principal (). Deje que muestre el valor de e.ExceptionObject.Tostring () en, digamos, un cuadro de mensaje. Eso te consigue el rastro de la pila administrada de la excepción. Mientras que ese cuadro de mensaje se muestra, también podría romper el Minidump, debería acercarse a la ubicación del accidente.

La excepción particular que está recibiendo, sin embargo, definitivamente señala el código nativo de C / C ++. Un desbordamiento de tampón que está corrompiendo la pila. Asegúrese de tener los archivos .pdb para cualquier código nativo que use su aplicación. Y configure el servidor de símbolos de Microsoft para obtener una buena traza de pila nativa del Minidump.

Editar: El hecho de que no obtenga la excepción de la excepción que no se levante definitivamente apunta a apilar la comprobación de integridad en el CRT. Fue diseñado para no plantear una excepción, pero terminar el programa de inmediato. Comportamiento necesario Debido a que la pila está comprometida, el código no puede asumir que puede ser desenvainado de manera segura. Dada la ubicación del accidente, es probable que este cheque esté realmente hecho en el código CLR. Sé que esto no se hizo en versiones anteriores de CLR, pero eso podría ser diferente en la versión CLR incluida con .NET 4.0

Esto va a hacer que sea bastante difícil obtener una traza de pila administrada. Hay mucho que puede inverso-ingeniero de la traza de la pila no administrada, siempre que configure el servidor de símbolos para que obtenga nombres de identificadores de los cuadros de pila CLR. Publique ese rastro de pila en su pregunta si desea ayudarlo a interpretarlo. Un error en el código CLR no es improbable por cierto, es posible que desee considerar llamar a Microsoft Support. Sin embargo, necesitarán una reproducción consistente. Pueden hacer que lo hagan con eso, todos los rastros de pila importante si es difícil de conseguir la Repro. Configure el servidor de símbolos para obtener una buena seguimiento de pila no administrada. Fácil en VS2010: Herramientas + Opciones, depuración, símbolos, marca "Microsoft Symbol Servers".

Otros consejos

Usted configura procdump para obtener un volcado de memoria completo si la aplicacióntiene una excepción no controlada, que puede depurarlo en VS o WINDBG

y el minidump tiene información de pila de llamadas como cubos de Watson, aquí es una de CLR Equipo y yo escribí sobre la MISMO

Una breve explicación en la información de Watson Bucket que se ve en el Visor de eventos para la excepción no controlada

  1. exefilename
  2. versión de ensamblaje exe
  3. Timestamp de ensamblaje exe
  4. nombre completo
  5. versión de ensamblaje de fallas
  6. Timestamp de ensamblaje de fallas
  7. Método de ensamblaje de falla def
  8. Método de falla IL Instrucciones que causaron la excepción
  9. Tipo de excepción
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top