2009-09-10 16 views
5

Por lo general, Visual Studio se rompe si se encuentra con una excepción no controlada y muestra una ventana del asistente de excepción.Visual Studio no se rompe con el asistente de excepción, pero simplemente detiene el proceso

Pero en algunas ocasiones, Visual Studio simplemente detiene el programa que se estaba ejecutando y no se rompe o muestra el asistente de excepción.

Las opciones de excepción (Ctrl + Alt + E) están configuradas correctamente: "usuario-no controlado" está marcado en todos los elementos, "arrojado" está desmarcado. En las opciones de depuración, he habilitado el asistente de excepción.

Como solo ocurre en algunas ocasiones, traté de averiguar cuándo Visual Studio entra en su "estado de asistente de excepción que funciona mal".

EDIT:

Parece que el mal funcionamiento del asistente excepción fantasma sólo aparece en aplicaciones Windows Forms, y sólo después de que ha habido algún tipo de acción externa como llamar a un servicio web o la apertura de una conexión de base de datos.

FIN EDITAR

Resulta que el asistente excepción funciona bien hasta que se abra una conexión ADODB:

var conn = new ADODB.Connection(); 
conn.Open("Provider=SQLOLEDB;Server=localhost;Database=db;UID=user;PWD=pw;", "", "", -1); 
throw new InvalidOperationException(); 

Después excecuting la declaración conn.Open, el asistente excepción no entrará en funcionamiento.

¿Le suena familiar a alguien y, más importante aún, alguien tiene una solución para el problema? Como se puede imaginar, la depuración de una aplicación se vuelve muy difícil si la aplicación siempre se detiene en las excepciones.

+0

No hay respuestas hasta el momento, por lo que me preguntaba: ¿esto es un problema om solo en mi máquina, o son otras personas capaces de reproducir este comportamiento con el código proporcionado anteriormente? Agradecería que alguien pudiera probar esto. Realice un nuevo proyecto con una referencia a adodb y copie el código de muestra en él. La depuración debería detenerse en la instrucción throw (en lugar de romperse). –

+0

Espero que recibas una respuesta. Me encontré con algo que suena como tu situación al hacer funcionar una macro de Visual Studio. Estoy intentando agregar banners a los archivos de código fuente de la manera en que se hace en esta pregunta: http://stackoverflow.com/questions/415101/need-visual-studio-macro-to-add-banner-to-all-c -files –

Respuesta

0

Me estoy poniendo algo similar (el mismo comportamiento), pero creo que This Microsoft Help Page también describe mi situación: "Las excepciones no controladas en eventos de formularios de Windows no se propagan por pila de llamadas"

+0

Estamos trasladando gradualmente los proyectos a VS2010, por lo que el problema ya no es muy urgente. Pero gracias de cualquier manera. –

2

No estoy del todo seguro de qué causa este comportamiento, pero me acaba de ocurrir exactamente lo mismo.

La versión corta de esta respuesta:

Vuelva a instalar Visual Studio 2008 SP1. Si no lo tienes instalado entonces creo que puedes reparar tu instalación de VS, o simplemente aplicar sp1 ahora y debería arreglarlo.

La versión larga:

que tenía una excepción en mi código, y el estudio visual no era mostrar el asistente de depuración en el momento que ocurrió la excepción - en vez me sale el error de Windows cuadro de diálogo Informes , y un mensaje preguntándome si quería depurar el proceso. Si le digo a VS que se rompa cuando se lanzaron todas las excepciones, funcionaría (pero esa no es forma de depurar una aplicación).

Curiosamente, en la misma máquina he podido depurar un servicio WCF que se ejecuta dentro de IIS7.5, así que no pude entenderlo.

Después de numerosos improperios e intentos repetidos, desactivé Windows Error Reporting. Aún así, aparece el cuadro de diálogo y VS no incumpliría la excepción.

Desactivé el servicio de informe de errores de Windows (se inició a pedido); esta vez, la aplicación simplemente saldría sin mostrar el cuadro de diálogo, pero aún así VS no incumpliría con la excepción.

Al final, pensé que tal vez había un problema de configuración con VS, así que volví a aplicar Visual Studio 2008 sp1 y ahora todo vuelve a funcionar correctamente.

+0

Ya he intentado reinstalar vs2008, pero eso no ayudó. Pero después de volver a instalar, todavía tenía mi propia configuración. ¿Qué hiciste para borrar la configuración? –

+0

Hoy descubrí que aún no había instalado SP1.Lo he instalado ahora, pero la aplicación acaba de salir en una excepción en lugar de VS que muestra el asistente de depuración –

+1

disculpe por la demora - ¡realmente necesito activar las notificaciones de correo electrónico! ¿Se detiene el comportamiento si comprueba todas las excepciones de .Net bajo la columna 'Thrown' en el menú Depurar -> Excepciones? Si es así, podría pasar algo complicado con un filtro de excepción en alguna parte. Puede restablecer toda la configuración del entorno abriendo Herramientas -> Opciones -> Importar y exportar configuraciones. la opción inferior es restablecer todas las configuraciones. Sin embargo, debe exportar su configuración actual para poder importar de forma selectiva cosas como fuentes y colores, ubicaciones de carpetas, etc. antes de hacer esto. –

1

No estoy seguro de si entiendo cómo podría estar pasando esto, pero tengo un problema muy similar. El ayudante tampoco parece aparecerme. LA GRAN DIFERENCIA es que simplemente vuelve a mi forma, sin interrupciones, sin excepciones de Windows, no termina el sub, como llamé a un sub de salida en ese punto o algo así.

Es así: estoy revisando el código y alcanzo un poco de código incorrecto, toco el paso hacia adentro para ejecutar el código resaltado, y de repente mi forma se muestra de nuevo, puedo interactuar con la forma y continúe como si nada hubiera sucedido ... Especialmente molesto cuando parece que no veo nada mal en el código y necesito la excepción para decirme qué salió mal (cadena de formato incorrecto? tipos incorrectos?)

Ejecutando VS 2010 Premium en Windows 7 x64 ... por lo que sé, tengo la configuración del depurador como predeterminada (para una aplicación de formularios de Windows depurada). Usando VB.Net, no hay conexiones de datos (a menos que cuente un archivo XML, pero eso no parece causarlo ...) nada realmente especial sobre el código, creo que un simple desbordamiento de la pila [...] lo causaría suceder ¿Alguien tiene la misma experiencia?

:: Edición ::
Por cierto, cuando no es un error obvio, poner un bloque intento de captura alrededor de la mancha que "tiene una excepción" para detectar la excepción real, a continuación, busque en la excepción capturada en el código - molesto, pero funciona!
:: Editar otra vez ::
Bueno, parece que he descubierto cómo obtener ayuda de excepción - Creo que alguien aquí mencionó que ya habían agotado esta opción, pero solucionó mi problema: [Depurar -> Excepciones -> " Interrumpir cuando se produce una excepción: "-> Excepciones de Common Language Runtime: Thrown] debe verificarse - no parece tener sentido por qué seguiría funcionando ... oh bien
:: End Edit ::

+0

Bienvenido a StackOverflow. Esta no es una respuesta a la pregunta original, y de hecho es una pregunta separada. Deberías publicar preguntas por separado como tu propia pregunta y vincular a preguntas relacionadas para referencia. Para obtener más información, lea las preguntas frecuentes: http://stackoverflow.com/faq Además, tengo exactamente el mismo problema que usted y ya he publicado una pregunta aquí: http://stackoverflow.com/questions/4552416/why -doesnt-visual-studio-2010-break-on-a-unhandled-exception Si tiene algo que agregar a la pregunta, le recomiendo que lo publique como un comentario en su lugar. – Brad

0

Me encontré con las circunstancias exactas como Jan Willem, con ADODB.Connection.Open expulsándome del programa en Visual Studio en lugar de ir al asistente de depuración. El problema era que el proveedor solicitado estaba usando un dll de 32 bits y yo estaba compilando para 64 bits. Cambiar el proyecto a 32 bits hizo que la excepción fuera visible en Visual Studio.

Cuestiones relacionadas