2008-09-09 20 views
6

Tengo una aplicación de Windows en producción desde hace un tiempo y la hemos configurado para enviarnos informes de errores cuando arroja excepciones. La mayoría de estos son bastante descriptivos y me ayudan a encontrar el problema muy rápidamente (utilizo el bloque de excepción de la aplicación MS)..NET Production Debugging

En algunas ocasiones tengo informes que son problemas que no puedo reproducir y que parecen ocurrir solo en algunas máquinas cliente.

No tengo acceso físico a estas máquinas cliente, ¿cuáles son algunas estrategias que puedo usar para la depuración? ¿Sería mejor construir algún rastreo en el código o hay otras alternativas?

Gracias.

Editar: Debería haber sido más claro: los informes de error que obtengo tienen el seguimiento de la pila, pero dado que es código de producción, no indica la línea exacta que causó la excepción, solo el método en el que fue lanzado.

Respuesta

2

Una opción es generar un archivo de volcado (mini-) tan cerca del punto donde se lanza la excepción como sea posible. Esta article habla sobre cómo hacer esto desde el código administrado.

A continuación, puede cargar el archivo de volcado en Visual Studio o WinDbg y examinarlo con la ayuda de SOS

1

Siempre lo uso module de Jeff para las excepciones no controladas, me envía un correo electrónico con StackTrace etc.

2

Está en el camino correcto. Necesita crear un módulo de seguimiento que registra acciones/excepciones localmente.

A continuación, puede tener un botón o una opción de menú que el usuario puede hacer clic para enviar esta información por correo electrónico en el momento en que ocurre el problema, o pueden tener la opción de obtener el archivo para que puedan transferirlo para ti de cualquier otra manera.

Incluso puede incorporar un código de diagnóstico para ejecutar una verificación de integridad en el sistema y enviarle un informe (quizás ejecute todas las pruebas de su unidad para ver si funcionan en ese sistema).

1

inteligente visualmente desde Gurock Software ha sido muy útil en muchas ocasiones para mí. Es muy fácil de poner en una aplicación .NET y le proporciona un control extremadamente potente al analizar archivos de registro. Tiene niveles de registro que le permiten desactivar ciertas funciones, excepto en ciertos casos para que no pierda rendimiento.

Incluso tienen un software de servidor al que su software se puede conectar para guardar registros cuando no tiene acceso completo a las máquinas. Por ejemplo, podría tener un servidor ejecutándose en www.tudominio.com. Su software tendría una opción de configuración para activar la depuración. Smart Inspect se configuraría para enviar los datos de registro a su servidor (y opcionalmente a un archivo local) para que pueda obtener el registro en vivo sin importar dónde se está ejecutando el software.

Smart Inspect es muy fácil de configurar y tiene muchas características que puede usar para ayudar. Lo he usado para depurar aplicaciones de servidores de subprocesos múltiples de alto impacto sobre la marcha sin quitar las máquinas. Tiene todos los ganchos para realizar un seguimiento de diferentes procesos, hilos y máquinas.