80 votes

Déchiffrement des paramètres d’exception .NET clr20r3 P1..P10

je suis en train de déchiffrer le sens de la P1...P10 paramètres associés à un clr20r3 qui est écrit dans le journal des événements lorsque mon application rencontre une exception.

Le meilleur que j'ai pu trouver est:

  • P1: le processus d'hébergement (par exemple, w3wp.exe)
  • P2: le processus d'hébergement de version (par exemple, 6.0.3790.1830)
  • P3: ??? (par exemple, 42435be1)
  • P4: l'assemblée à partir de laquelle l'exception a été soulevée (par exemple, mrtables.webservice)
  • P5: la version de l'assembly (par exemple, 2.1.2.0)
  • P6: ??? (par exemple, 4682617f)
  • P7: ??? (par exemple, 129)
  • P8: ??? (par exemple, 50)
  • P9: le type d'exception soulevée (par exemple, system.argumentexception)
  • P10: ??? (par exemple, NIL)

Googler pour clr20r3 propose des milliers d'exemples de valeurs de paramètre, à partir de laquelle quelqu'un peut essayer de dériver un modèle.

Mais j'espère pour de la documentation sur le paramètre sens, par opposition à des suppositions éclairées.


Edit: Pendant que je puisse espérer canonique de la documentation, vraiment, je serais heureux de voir que l'exception levée, à la ligne, avec une trace de la pile.

113voto

Hans Passant Points 475940

P7 et P8 sont ceux qu'il est important de savoir d'où l'P9 exception a été soulevée. L'utilisation de P4 à savoir ce que l'assemblée chercher. Exécuter ildasm.exe et ouvrir cette assemblée. Fichier + Vidage, cochez la case "Jeton de valeurs" case à cocher, OK et enregistrez le .il fichier quelque part.

Ouvrez le fichier dans un éditeur de texte. P7 vous donne la méthode du jeton, il commence avec 0x06, la production de valeur du jeton "06000129". Recherche pour:

.method /*06000129*/

Qui vous donne le nom de la méthode, de chercher à partir de là, trouver le .de la classe, qui vous donne le nom de la classe.

P8 vous donne la IL offset. De la trouvé .méthode, regardez pour IL_0050 pour l'instruction qui a levé l'exception. La cartographie de retour à votre code source est un peu délicat, mais vous aurez probablement comprendre. Utiliser un Réflecteur si nécessaire.

En général, écrire un gestionnaire d'événement pour l' AppDomain.UnhandledException pour éviter la douleur de la rétro-ingénierie ces Watson crash seaux. Journal de la valeur de e.ExceptionObject.ToString() à obtenir à la fois le message d'exception et une trace de la pile.

83voto

Naveen Points 2653

Voici les informations sur Watson Seaux

  1. Nom De Fichier Exe
  2. Fichier Exe de la version de l'assembly nombre
  3. Exe Fichier Timbre
  4. Exe complet du fichier nom de l'assembly
  5. Défaillant version de l'assembly
  6. Défaillant assemblée timestamp
  7. Défaillant méthode de montage def
  8. Les failles de la méthode IL Compensée dans les failles de la méthode
  9. Type d'Exception

Et aussi ici à MSDN article sur le même.

Exemple:

  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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X