J'essaie de déterminer pourquoi un processus est suspendu et j'apprends à propos de divers outils tels que Explorateur de processus , moniteur de processus et windbg .
Quoi qu'il en soit, j'essaie d'utiliser Windbg et après avoir été attaché à mon processus, le débogueur dit ceci: P>
FAULTING_IP: ntdll!DbgBreakPoint+0 77c18b2e cc int 3
4 Réponses :
Tess Ferrandez 'Blog est une ressource fantastique pour le matériau .NET WINDBG: P>
Si elle est cassée, corrigez-la, vous devez < / p> blockQuote>
Bien que bon nombre de ses articles cible le processus de traitement des travailleurs IIS / ASP.NET se bloque, se bloquent et les fuites, la plupart des techniques peuvent être appliquées à toutes sortes de scénarios. P>
Avancé Windows Débogage serait un bon départ . p>
Lorsque WINDBG se fixe à un processus, il injecte un fil qui appelle dbgbreakerpoint. C'est ce que vous voyez. Vous pouvez utiliser ~ pour voir les filets d'exécution et ensuite ~ n pour passer à un fil différent. k vous donnera une trace de pile du fil actuel, qui devrait vous donner une idée du pendre. P>
L'instruction INT 3 (CC en binaire) est l'une des méthodes de dérivation des points de rupture dans une application. Cette instruction génère une interruption qui met en pause l'exécution du programme et donne au débogueur la possibilité de réagir à cette interruption. Il vous suffit de choisir de continuer à exécuter jusqu'à ce que vous atteigniez où votre programme est suspendu. P>
WINDBG est un débogueur de mode utilisateur et de noyau, mais il ne comprend pas vraiment le code géré et, en tant que tel, la commande SOS et PSCOR2 fournit plus ou moins les mêmes fonctionnalités que SOSEX ajoute de nouvelles fonctionnalités pour le débogage géré. Les fichiers d'aide pour chacun de ceux-ci sont disponibles à partir de Windowbg. Par exemple. Pour obtenir l'aide pour SOS, vous pouvez utiliser la commande Vous devez charger SOS ou PSSCOR2 et éventuellement SOSEX pour déboguer une application gérée avec WINDBG. Par exemple. Si vous souhaitez charger SOS, vous utilisez la commande Charger comme celle-ci p>
Cela chargera SOS de l'emplacement de l'exécution .NET. Veuillez noter que le temps d'exécution est appelé WINDBG a besoin de symboles pour afficher des informations supplémentaires. Ceci est particulièrement important pour le code non géré. Vous pouvez utiliser la commande Comme votre demande est suspendue, il y a de bonnes chances que vous ayez une ou plusieurs fils bloqués. Vous pouvez afficher les threads gérés à l'aide du Si vous voulez plus d'informations, il y a quelques livres et certains blogs à lire. P>
livres: p>
Blogs: P>
VIDÉOS: P>
! analyser code> est une utilisation limitée. Si vous souhaitez déboguer des applications gérées à l'aide de WINDBG, vous avez besoin d'un moyen de faire comprendre à WindBG les structures internes du code géré. Un certain nombre de DLL d'extension permettent cela. Le .NET Framework est expédié avec sos.dll et il y a des téléchargements tels que psscor2.dll et sentex.dll . P>
! sos.help code>. p>
.loadby sos clr code> p>
mscorwks code> dans .NET 2 et coreClR code> dans Silverlight, donc si vous utilisez l'une ou l'autre, vous devez modifier le . charrette code> commande en conséquence. p>
.Symfix code> pour laisser WINDBG récupérer des symboles selon les besoins du serveur de symboles de Microsoft. P>
! Threads code> (ou juste ! T code>). Dans les serrures simples .NET sont implémentées en interne à l'aide d'une structure appelée SyncBlocks. Vous pouvez les afficher à l'aide de la commande ! Syncblk code>. Si vous avez chargé SOSEX, la commande ! DLK code> peut détecter automatiquement des blocages. P>