Premièrement, existe-t-il une commande pour obtenir de l'aide et des paramètres pour chaque commande sos dans windbg
?Veuillez expliquer SyncBlk la commande windbg
Deuxièmement, je voudrais comprendre !syncblk
sortie
Index SyncBlock MonitorHeld Recursion Owning Thread Info SyncBlock Owner
201 05b9493c 979 1 05bc1040 bcc 45 022f3490 System.Collections.ArrayList
2875 05b4c914 1 1 17b99e10 1af8 290 024862d8 MyClass
2945 05b4b66c 1 1 17d1a290 12c0 752 02482940 MyClass
MonitorHeld
montre de moniteur # tenu par le synblk
. 1 pour écrire et 2 pour lire, mais que signifie le reste de la colonne?
Dire que j'ai un code C#
MyClass MyObj;
MyObj = new MyClass();
Maintenant, si je
lock (MyObj)
{
}
Est-ce que le spectacle de la colonne propriétaire syncblk
"MyClass"? De même lorsque j'exécute cette commande !SyncBlk
, que me montre-t-elle exactement? Est-ce qu'il me montre le nombre de lock()
et Monitor.Enter
et Mutex
() et d'autres mécanismes de verrouillage?
Pouvez-vous indiquer quelle colonne indique quelle valeur? il y a 2 colonnes syncblock. – bsobaid
J'ai mis à jour ma réponse pour clarifier. S'il vous plaît laissez-moi savoir si ce n'est toujours pas clair. –
Merci, et que signifient les colonnes 1,2 et 4? WinDbgId est utilisé pour explorer un thread? quelque chose comme ~ 45e! clrstack? Existe-t-il un moyen de connaître la ligne de code dans laquelle une ligne syncblock donnée contient/attend un thread? – bsobaid