Pregunta

Tengo una excepción no controlada que hace que aparezca el cuadro de diálogo Asistente de excepción.

Cuando hago clic en el detalle de la vista ..., la excepción en sí tiene algunos valores en su modelo de objetos personalizado que no se evaluará en la cuadrícula de propiedades, pero sé que puedo evaluarlo en la ventana inmediata. (En este caso, la cuadrícula de propiedades no me deja profundizar en una colección, pero puede haber otros casos)

Sin alterar el código para agregar un bloque de prueba, ¿Cómo puedo ir a la ventana inmediata y evaluar expresiones en la excepción no manejada?

La respuesta probablemente será una magia que simplemente no conozco todavía, ¿esta?

algo que involucra System.Diagnostics.StackFrame o quién sabe. Algo inteligente.

Hay una manera de navegar a él usando el hilo del depurador, pero eso es bastante complicado. Si puede tomar eso y simplificarlo con un envoltorio que podría ser una solución.

¿Fue útil?

Solución

¿Intentaste configurar el depurador para romper cuando se lanza la excepción en lugar de solo cuando está desconectado por el usuario?

Para hacer esto, vaya al menú principal VS2010 y seleccione el menú 'Depurar' siguiente Seleccione 'Excepciones ...'

Que traerá un diálogo como:Debug - loading= Exceptions.. menu">

Seleccione la columna lanzada

Ahora, cuando se lanza su excepción y debería poder evaluar sus variables locales en la ventana inmediata.

En la pestaña Locals puedo ver la variable de excepción $:Local variables contains $exception

Puedo usar la variable "$ excepción" en la ventana inmediata:Immediate Window accessing $exception

Actualizar: También para un fácil manejo de manejo de excepciones, recomiendo usar el Exception Breaker Visual Studio Extension, que le permite activar el manejo y apagado de las excepciones de la barra de herramientas en lugar de tener que perforar en el menú de depuración.

Otros consejos

No sé sobre Visual Studio 2010, pero en Visual Studio 2012, cuando ocurre una excepción no controlada, se muestra en el Locals ventana con el nombre $exception.

Hay una propiedad que no se evaluará en la red de propiedades

Si la propiedad no se puede evaluar, el depurador no le ayudará como has visto; Por lo tanto, la ventana inmediata haría lo mismo.

Tenía una propiedad inválida de tal manera que arrojaría una excepción en VS2010 y causaría que el depurador se bloqueara cuando intenté evaluarla. Los nulos que se devuelven de las propiedades no fueron agradables para el depurador.

Te recomiendo que te vayas old school sobre el tema y poner Trace.write dentro de la propiedad y en otros lugares y monitoree los informes de escritura en la ventana de salida.

Cómo rastrear y depurar en visual c#

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top