2010-06-22 2 views
3

Existe-t-il un moyen de trouver quelle exception a été interceptée par le code .NET depuis l'extérieur de l'application?Comment renifler une exception interceptée dans .NET sur une machine de production?

J'ai trouvé que 3d party API lève une exception et la supprime (je vois le compteur de perf remonter).

Mais il ne le montre pas en trace (j'ai essayé sysinternals dbgView).

Quel outil peut afficher une exception interceptée?

+0

FYI ... Certaines méthodes normales (telles que Response.End) lancent des exceptions afin qu'un nombre d'exceptions incrémentielles dans perfmon ne soit pas toujours mauvais. – David

+0

Je ne comprends pas votre point .. Je suis d'accord que ce n'est pas mauvais. Je ai juste besoin de savoir ce que c'est et le pousser dans le visage des devs de l'API, car ils ne sont pas utiles. Et cette exception rend toute l'application que j'ai passé 5 semaines de mylife inutile ..... erm .. expliqué? –

Répondre

2

L'outil auquel je me tourne toujours dans cette situation est WinDBG. Télécharger le 32bit version ou le 64bit version, en fonction de la bonté du processus.

Pour une raison boiteuse, la dernière version ne dispose pas d'un lien de téléchargement direct (uniquement disponible dans le SDK), alors passez à la section «Version précédente» et prenez la dernière version.

charge WinDBG après l'installation et procédez comme suit:

  1. Fichier -> attach à un processus (F6)
  2. Sélectionnez le processus cible, puis cliquez sur 'Ouvrir'
  3. Dans la console entrez les informations suivantes :
    • .loadby sos mscorwks (cela charge les extensions de débogueur .NET)
    • sxe clr (dit le débogueur b Reak sur les exceptions gérées)
    • g (GO!)
  4. Exécutez le processus jusqu'à ce que l'exception se produit.
  5. Le débogueur va se casser, à ce moment, entrez !pe pour voir les détails de l'exception.

La commande !clrstack est utile pour afficher la pile gérée ou essayez !dumpstack pour inclure les appels natifs.

Si le débogueur s'arrête sur une exception dont vous n'avez pas besoin, appuyez à nouveau sur 'g' jusqu'à ce que vous obteniez celui que vous voulez voir.

La commande !help affichera toutes les extensions .NET disponibles et, si vous souhaitez approfondir, je recommande fortement Tess Ferrandez's blog.

1

Pouvez-vous attacher au processus avec le débogueur distant dans Visual Studio et l'avoir configuré pour rompre lorsqu'une exception est levée?

+0

Je ne suis pas sûr que ça va se casser. C'est un code de version et l'exception est lancée quelque part dans le code de l'API 3d party. –

Questions connexes