En primer lugar, ¿hay algún comando para obtener ayuda y parámetros para cada comando sos en windbg
?¡Explique! SyncBlk el comando windbg
En segundo lugar, me gustaría entender !syncblk
salida
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
muestra # de monitor de poder del synblk
. 1 para escribir y 2 para leer, pero ¿qué significa el resto de la columna?
decir que tengo un código C#
MyClass MyObj;
MyObj = new MyClass();
si hago lo
lock (MyObj)
{
}
Will la columna espectáculo syncblk
propietario "MyClass"? De manera similar cuando ejecuto este comando !SyncBlk
, ¿qué es exactamente lo que me muestra? ¿Me está mostrando el número de lock()
y Monitor.Enter
y Mutex
() y otros mecanismos de bloqueo?
¿Puede decir qué columna muestra qué valor? hay 2 columnas de sincronización. – bsobaid
He actualizado mi respuesta para aclarar. Por favor, avíseme si aún no está claro. –
Gracias, y ¿qué significan las columnas 1,2 y 4? WinDbgId se utiliza para profundizar un hilo? algo así como ~ 45e! clrstack? ¿Hay alguna manera de saber la línea de código donde una línea de sincronización está reteniendo/esperando un hilo? – bsobaid