Estoy trabajando en el desarrollo de un software en C++ en Visual Studio 2010. Como este software debe ejecutarse en servidores donde la interacción humana no está disponible, realmente necesito deshacerme de esto "program.exe ha dejado de funcionar "ventana que aparece en la versión de lanzamiento en caso de errores. Solo quiero que el programa finalice (quizás también dé un mensaje de error, pero no necesariamente) y no lo tenga bloqueado esperando que alguien haga clic en el botón "Cerrar el programa". Debo mencionar que tengo Windows 7 Professional de 64 bits en mi máquina.¿Cómo evitar la ventana "program.exe ha dejado de funcionar" en modo de lanzamiento en Windows?
He leído en varias cosas, como por ejemplo:
la función _set_abort_behavior. Esto resuelve el caso cuando se invoca abort(), pero ese no es el caso para errores como "vector subíndice fuera de rango".
Sé que podría estar solucionando algunos de estos errores haciendo el manejo de excepciones, pero no todos los errores son excepciones, por lo tanto, esto no resolvería todo mi problema.
También he leído algo sobre el depurador Dr. Watson, que se supone que debe terminar la aplicación silenciosamente, pero tengo la impresión de que este depurador no está disponible para Windows 7. Además, no sé si esto depurador resolvería mi problema en el modo de lanzamiento ...
No me parece que deshabilitar los informes de error en toda mi máquina es una opción elegante, aunque he leído que esto también podría ser una alternativa (no realmente una que Quiero tomar).
¿Cómo puedo hacer esto en Visual Studio? ¿Hay alguna configuración que pueda usar?
¿Existe alguna forma de convertir todos los errores en excepciones en Visual Studio, para que pueda resolver el problema con el mecanismo de manejo de excepciones? (Sea tolerante si esta fue una pregunta estúpida)
Espero sus propuestas. ¡Muchas gracias por tu tiempo!
Saludos, Cornelia
La mejor manera sería deshacerse de lo que está causando el colapso en primer lugar. – chris
"También he leído algo sobre el depurador Dr. Watson, que se supone que debe terminar la aplicación silenciosamente" - Este es un tipo de uso "excepcional" para el depurador (del que nunca escuché, el depurador puede iniciarse automáticamente en el caso de bloqueo de la aplicación). Y ciertamente no para el modo de lanzamiento. – SChepurin
@Chris: ¡esa es una respuesta obvia! Pero el problema real es que cuando la aplicación se ejecuta en algún servidor y encuentra un error y falla, sigue colgando y no sé si todavía está ejecutándose o atascado (sin implementar algún tipo de vigilante dependiente de la plataforma en el sistema backend, que no es lo que quiero!). Así que prefiero que la aplicación se cierre después de descubrir el error y luego puedo verificar el archivo de registro y ver que inesperadamente dejó de funcionar y sabré que tengo un problema. –