Uno de mis programas falla periódicamente, pero no sé por qué. Lo estoy ejecutando en modo de depuración, pero no aparece nada. El programa simplemente sale de repente. He tenido otros errores que arrojan una excepción ... pero no esta. ¿Hay una forma mágica de atraparlo o algo así?Cómo depurar un programa cuando falla sin excepción?
Respuesta
Presumiblemente lo está ejecutando desde Visual Studio y, por alguna razón, no se detiene en el depurador con una excepción no detectada, en cuyo caso podría intentar detectar el bloqueo desde fuera de Visual Studio. Vea mi respuesta en System.AccessViolationException from unmanaged code?, en particular how to capture a crash dump.
Si solo se cuelga periódicamente, pero dentro de un período de tiempo razonablemente corto, comience con Sysinternals procdump. Comience el ejecutable desde fuera de Visual Studio, ejecute:
procdump -e <YourExecutableNameOrPid>
y esperar a que la cosecha de un volcado de bloqueo - suponiendo que sale debido a una excepción no controlada - a continuación, cargar el volcado de bloqueo en VS 2010 o WinDbg.
El programa de repente sale
definitivamente compruebe que su código, o una de las bibliotecas que utiliza, no llama a exit() (sí puede parecer demasiado simple, pero horas una vez perdido el rastreo los programas al azar cierran las llamadas a exit() ..). Si es así, coloque un punto de interrupción allí o cambie a throw(), luego vuelva a ejecutar. Si no, la respuesta de Sean parece legítima.
Nosotros tuvo este problema exacto una vez y nos llevó años averiguarlo. Vale la pena verificarlo. –
También debe establecer un punto de interrupción o alguna declaración de registro como última línea en main()/winmain(). Posiblemente el programa termina "normalmente" por lo tanto de una manera inesperada. –
@Red: es una aplicación GUI de WPF ... todo el código está en eventos, no creo que llegue nunca al final. @stijn: Estoy bastante seguro de que no escribí ninguna llamada de salida, pero lo verificaré dos veces. – mpen
Puede encontrar más sugerencias en la siguiente publicación similar: Third-party dll crashes program with no exception thrown.
- 1. Cómo depurar un programa C
- 2. ¿Cómo depurar un programa compilado con 'make'?
- 3. ¿Cómo depurar un programa envuelto en un script libtool?
- 4. writeToFile falla - ¿cómo puedo depurar POR QUÉ falla (qué herramientas)?
- 5. ¿Cómo depurar la excepción en otro hilo?
- 6. ¿Cómo puedo generar un SIGINT cuando uso XCode para depurar?
- 7. Cómo depurar un programa de línea de comandos C#
- 8. ¿Cómo puedo depurar una falla difícil de reproducir sin una pila de llamadas útil?
- 9. ¿Cómo depurar/ejecutar un programa Ocaml paso a paso?
- 10. ¿Cómo puedo depurar retrospectivamente una excepción de python?
- 11. utilizar Falla WCF Excepción
- 12. python unittest assertRaises lanza excepción cuando assertRaises falla
- 13. Programa de bloqueo de dll de terceros sin excepción lanzada
- 14. ¿Cómo obtener un seguimiento de pila cuando falla el programa C++? (usando msvc8/2005)
- 15. Cómo reintentar urllib2.request cuando falla?
- 16. Cómo depurar programa con controlador de señal para SIGSEGV
- 17. ¿Qué sucede en el nivel del sistema operativo cuando un programa .net se cierra debido a una excepción no detectada?
- 18. Depurar copias múltiples de un programa de una instancia VS
- 19. ¿Cómo puedo depurar una excepción no controlada en el código administrado cuando se llama desde COM?
- 20. Cómo depurar ConcurrentModificationException?
- 21. Cuando un objeto RAII falla al construir
- 22. Cómo depurar un sombreador GLSL?
- 23. Obteniendo una mejor depuración cuando Linux falla en un programa en C
- 24. Cómo depurar cuando CakePHP Modelo :: save() no intenta un INSERT
- 25. ¿Cómo encontrar un motivo cuando mkdir falla en PHP?
- 26. Cómo sé a qué dirección ilegal accede el programa cuando ocurre una falla de segmentación
- 27. Cómo depurar aplicaciones PyQt sin relanzar?
- 28. C# - Programa sin ventana
- 29. Ruby get backtrace sin excepción
- 30. ¿Por qué mi programa no falla cuando escribo después del final de una matriz?
¿qué hacer si tiene una AccessViolationException en una aplicación .NET 4 que realmente golpea un bloque catch inesperadamente? Sí, esto realmente me está sucediendo en este momento. No pude creerlo yo mismo. Planee hacer una pregunta separada de StackOverflow, pero primero leo esta respuesta. Debido a que la aplicación no falla, no hay un volcado de emergencia, ¿no? –
@JohnZabroski Volvería a la depuración con WinDbg y SOS [EX]. Ver mi otra respuesta vinculada a arriba. –
Gracias, describí mi problema en detalle aquí: http://stackoverflow.com/questions/39378849/what-to-do-when-accessviolationexception-in-net-4-app-defies-msdn-documented-be –