2010-10-29 7 views
71

Estoy tratando de descifrar el significado en los parámetros P1 ... P10 asociados con un clr20r3 que se escribe en el registro de eventos cuando mi aplicación experimenta una excepción.Descifrando los parámetros de excepción .NET clr20r3 P1..P10

los mejores que he been able to find es:

  • P1: el proceso de alojamiento (por ejemplo w3wp.exe)
  • P2: la versión proceso de alojamiento (por ejemplo 6.0.3790.1830)
  • P3: ??? (por ejemplo42435be1)
  • P4: el conjunto de la cual se elevó la excepción (por ejemplomrtables.webservice)
  • P5: la versión de montaje (por ejemplo2.1.2.0)
  • P6: ??? (por ejemplo4682617f)
  • P7: ??? (por ejemplo129)
  • P8: ??? (por ejemplo50)
  • P9: el tipo de excepción elevada (por ejemplo system.argumentexception)
  • P10: ??? (por ejemploNIL)

Googling for clr20r3 proporciona miles de valores de los parámetros de la muestra, de la que alguien puede tratar de derivar un patrón.

Pero estoy esperando documentación sobre los significados de los parámetros, a diferencia de las conjeturas.


Editar: Mientras que puedo esperar documentación canónica, en realidad estaría feliz de ver la excepción que es lanzado, en qué línea, con un seguimiento de pila.

Respuesta

67

Aquí está la información sobre Watson Cubos

  1. Exe archivo Nombre
  2. Exe ensamblaje del archivo número de versión
  3. Exe sello del archivo
  4. exe ​​nombre de ensamblado completo
  5. Con errores versión de ensamblado
  6. Faulting assembly timestamp
  7. Fau lting método de montaje def
  8. método Faulting IL Offset dentro del método fallamiento
  9. Tipo de excepción

Y también aquí es un artículo MSDN en el mismo.

muestra:

Problem Signature 01: devenv.exe 
    Problem Signature 02: 11.0.50727.1 
    Problem Signature 03: 5011ecaa 
    Problem Signature 04: Microsoft.VisualStudio.SharePoint.Project 
    Problem Signature 05: 11.0.60226.0 
    Problem Signature 06: 512c2dba 
    Problem Signature 07: 18a8 
    Problem Signature 08: 1d 
    Problem Signature 09: System.NullReferenceException 
+2

¿Tendría un enlace de referencia que documenta el resto de los segmentos de watson? El artículo vinculado solo menciona tres de ellos (y solo los menciona de pasada * "Por ejemplo, el cubo P4 describe el módulo de fallas, el cubo P9 muestra el tipo de excepción que no fue manejada, y el cubo P8 representa el desplazamiento IL al cual la excepción fue lanzada originalmente. "*) –

+2

He agregado una muestra al respecto – Kiquenet

100

P7 y P8 son los más importantes para averiguar dónde se produce la excepción P9. Use P4 para saber qué ensamblaje buscar. Ejecute ildasm.exe y abra ese ensamblaje. File + Dump, marque la casilla "Token values", OK y guarde el archivo .il en algún lugar.

Abra el archivo en un editor de texto. P7 le proporciona el token de método, comienza con 0x06, produciendo el valor de token "06000129". Buscar:

.method /*06000129*/ 

que le da el nombre del método, mira hacia arriba desde allí para encontrar el .class, que le da el nombre de clase.

P8 le ofrece la compensación IL. Desde el método. Found, busque IL_0050 para la instrucción que generó la excepción. Volver a asignarlo a su código fuente es un poco complicado, pero probablemente lo resuelva. Use Reflector si es necesario.

En general, escriba un controlador de eventos para AppDomain.UnhandledException para evitar el dolor de la ingeniería inversa estos cubos de choque de Watson. Registre el valor de e.ExceptionObject.ToString() para obtener el mensaje de excepción y un seguimiento de la pila.

+2

Si la excepción ocurre en el código de la biblioteca, es probable que necesite el rastro de la pila de todos modos para descubrir cuál de su código estaba en la pila. (Sería bueno si Microsoft modificara ese diálogo para ser más agradable a .NET.) –

+1

Además de manejar UnhandledException, también ayuda a intentar/atrapar directamente dentro de Main, ya que a veces el problema ocurre antes de que se instale el controlador UnhandledException. –

+0

Creo que esto me va a salvar a mi amigo. Tengo una aplicación ASP.NET que ha caído en mi regazo y que sigue bloqueando el grupo de aplicaciones, y un error que incluye 'CLR20R3' con un montón de esos valores' P' se está registrando justo en el momento del bloqueo. Puede ser complicado, pero probablemente me lleve a una solución, pero al final tendré que modificar este código y comenzar a registrarlo realmente. –

Cuestiones relacionadas