Estoy tratando de descifrar el significado de 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.
Lo mejor que he podido encontrar es:
- P1 : el proceso de alojamiento ( p
w3wp.exe
. Ej. ) - P2 : la versión del proceso de alojamiento ( p
6.0.3790.1830
. Ej. ) - P3 : ??? ( por ejemplo
42435be1
) - P4 : la asamblea de la que se planteó la excepción ( p
mrtables.webservice
. Ej. ) - P5 : la versión de montaje ( p
2.1.2.0
. Ej. ) - P6 : ??? ( por ejemplo
4682617f
) - P7 : ??? ( por ejemplo
129
) - P8 : ??? ( por ejemplo
50
) - P9 : el tipo de excepción generado ( p
system.argumentexception
. Ej. ) - P10 : ??? ( por ejemplo
NIL
)
Buscar en Google clr20r3 proporciona miles de valores de parámetros de muestra, a partir de los cuales alguien puede intentar derivar un patrón.
Pero espero documentación sobre los significados de los parámetros, en contraposición a conjeturas fundamentadas.
Editar: Si bien puedo esperar documentación canónica, realmente me alegraría ver que se lanza la excepción, en qué línea, completa con un seguimiento de pila.
Lectura adicional
- Excepción no controlada que hizo que la aplicación se bloqueara con "EventType clr20r3, P1 w3wp.exe" en el registro, pero no hay detalles allí (solicitando ayuda con un problema, mientras pedimos una explicación canónica de lo que significan los parámetros)
Respuestas:
Aquí está la información sobre Watson Buckets
Y también aquí hay un artículo de MSDN sobre 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
fuente
P7 y P8 son los importantes para averiguar dónde se planteó la excepción P9. Utilice P4 para saber qué ensamblaje buscar. Ejecute ildasm.exe y abra ese ensamblado. Archivo + Volcado, marque la casilla de verificación "Valores de token", haga clic en Aceptar y guarde el archivo .il en algún lugar.
Abra el archivo en un editor de texto. P7 le da el token de método, comienza con 0x06, produciendo el valor de token "06000129". Buscar:
.method /*06000129*/
Lo que le da el nombre del método, busque desde allí para encontrar el .class, que le da el nombre de la clase.
P8 le da la compensación IL. En el método. Encontrado, busque IL_0050 para la instrucción que generó la excepción. Mapearlo de nuevo a su código fuente es un poco complicado, pero probablemente lo resolverá. Utilice Reflector si es necesario.
En general, escriba un controlador de eventos para
AppDomain.UnhandledException
evitar el dolor de realizar ingeniería inversa en estos bloques de bloqueo de Watson. Registre el valor dee.ExceptionObject.ToString()
para obtener el mensaje de excepción y un seguimiento de la pila.fuente
CLR20R3
con un montón de esosP
valores se registra 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 conseguir un registro real.