2011-09-14 20 views
9

Ok, tengo esta multi-hilo programa en C++ que trato de depurar en Visual Studio 2008.¿Cómo puedo hacer que Visual Studio se rompa justo antes de que se detenga el programa?

veces (por lo general después de un tiempo aleatorio entre una y dos horas de cálculos), el programa se detiene, sale del modo de depuración después de escribiendo en la ventana de depuración:

The thread 'Win32 Thread' (0x1560) has exited with code 3 (0x3). 
The thread 'Win32 Thread' (0x5fc) has exited with code 3 (0x3). 
... 

Y así sucesivamente para todos los hilos implicados.

El código de salida AFAIK 3 indica un error de algo, espero que VS intercepte la excepción y la rompa para poder ver cuál es el error y qué lo causó.

Traté de activar todas las capturas de excepción en el menú de depuración visual studio, pero no cambió nada.

¿Hay alguna manera de decirle a VS que quiero un descanso cuando se produce esta salida anormal?

+0

Tuve uno de esos, y no pude encontrarlo en el modo de lanzamiento. Cuando se ejecutaba en modo Depuración, * con el depurador adjunto *, resultó ser simplemente una referencia directa y nula del puntero nulo, pero de alguna manera se informó como una excepción cuando el depurador no estaba conectado. –

Respuesta

11

Supongo que está fallando una afirmación y que el CRT no puede crear la ventana del mensaje (por alguna razón). Esto lleva a una llamada de salida (3). No estoy seguro de si eso matará a todos los hilos con ese código de salida. Quizás todos sus hilos fallan de la misma manera una vez que algo sale mal.

Intente agregar una llamada _CrtSetReportMode al comienzo de su programa para forzar los mensajes de error de aserción a la ventana de salida en el depurador. Luego, debería ver los detalles de la falla de aserción en la ventana de salida de depuración antes de la serie de mensajes de salida de subprocesos.

+0

Parece que tenías razón, una afirmación fue golpeada en un hilo diferente. Finalmente me deshice de este error, gracias :) – Louen

Cuestiones relacionadas