Compartir a través de


!cs

La extensión !cs muestra una o varias secciones críticas o todo el árbol de secciones críticas.

!cs [-s] [-l] [-o] 
!cs [-s] [-o] Address 
!cs [-s] [-l] [-o] StartAddress EndAddress 
!cs [-s] [-o] -d InfoAddress 
!cs [-s] -t [TreeAddress] 
!cs -? 

Parámetros

Parámetro Descripción
-s Muestra el seguimiento de pila de inicialización de cada sección crítica, si esta información está disponible.
-l Muestra solo las secciones críticas bloqueadas.
-o Muestra la pila del propietario para cualquier sección crítica bloqueada que se muestre.
Dirección Especifica la dirección de la sección crítica que se va a mostrar. Si omite este parámetro, el depurador muestra todas las secciones críticas del proceso actual.
StartAddress Especifica el principio del intervalo de direcciones para buscar secciones críticas.
EndAddress Especifica el final del intervalo de direcciones para buscar secciones críticas.
-d Muestra secciones críticas asociadas a DebugInfo.
InfoAddress Especifica la dirección de DebugInfo.
-t Muestra un árbol de secciones críticas. Para poder usar la opción -t, debe activar el Comprobador de aplicaciones para el proceso de destino y seleccionar la opción Comprobar uso de bloqueo.
TreeAddress Especifica la dirección de la raíz del árbol de secciones críticas. Si omite este parámetro o especifica cero, el depurador muestra el árbol de secciones críticas para el proceso actual.
-? Muestra un texto de ayuda para esta extensión en la ventana Comando del depurador.

Archivo DLL

Exts.dll

Información adicional

Para ver otros comandos y extensiones que pueden mostrar información de sección crítica, consulte Mostrar una sección crítica. Para obtener más información sobre las secciones críticas, consulte la documentación del SDK de Microsoft Windows, del Kit para controladores de Microsoft Windows y de Microsoft Windows Internals, de Mark Russinovich y David Solomon.

Comentarios

La extensión !cs requiere símbolos completos (incluida la información de tipo) para el proceso que se está depurando y para Ntdll.dll.

En los siguientes ejemplos se muestra cómo usar !cs. El comando siguiente muestra información sobre la sección crítica en la dirección 0x7803B0F8 y muestra su seguimiento de pila de inicialización.

0:001> !cs -s 0x7803B0F8
Critical section   = 0x7803B0F8 (MSVCRT!__app_type+0x4)
DebugInfo          = 0x6A262080
NOT LOCKED
LockSemaphore      = 0x0
SpinCount          = 0x0

Stack trace for DebugInfo = 0x6A262080:

0x6A2137BD: ntdll!RtlInitializeCriticalSectionAndSpinCount+0x9B
0x6A207A4C: ntdll!LdrpCallInitRoutine+0x14
0x6A205569: ntdll!LdrpRunInitializeRoutines+0x1D9
0x6A20DCE1: ntdll!LdrpInitializeProcess+0xAE5

El siguiente comando muestra información sobre la sección crítica cuyo DebugInfo está en la dirección 0x6A262080.

0:001> !cs -d 0x6A262080
DebugInfo          = 0x6A262080
Critical section   = 0x7803B0F8 (MSVCRT!__app_type+0x4)
NOT LOCKED
LockSemaphore      = 0x0
SpinCount          = 0x0

El siguiente comando muestra información sobre todas las secciones críticas activas del proceso actual.

## 0:001> !cs

DebugInfo          = 0x6A261D60
Critical section   = 0x6A262820 (ntdll!RtlCriticalSectionLock+0x0)
LOCKED
LockCount          = 0x0
OwningThread       = 0x460
RecursionCount     = 0x1
LockSemaphore      = 0x0
## SpinCount          = 0x0

DebugInfo          = 0x6A261D80
Critical section   = 0x6A262580 (ntdll!DeferedCriticalSection+0x0)
NOT LOCKED
LockSemaphore      = 0x7FC
## SpinCount          = 0x0

DebugInfo          = 0x6A262600
Critical section   = 0x6A26074C (ntdll!LoaderLock+0x0)
NOT LOCKED
LockSemaphore      = 0x0
## SpinCount          = 0x0

DebugInfo          = 0x77fbde20
Critical section   = 0x77c8ba60 (GDI32!semColorSpaceCache+0x0)
LOCKED
LockCount          = 0x0
OwningThread       = 0x00000dd8
RecursionCount     = 0x1
LockSemaphore      = 0x0
## SpinCount          = 0x00000000

...

El siguiente comando muestra el árbol de secciones críticas.

0:001> !cs -t

Tree root 00bb08c0

Level     Node       CS    Debug  InitThr EnterThr  WaitThr TryEnThr LeaveThr EnterCnt  WaitCnt
## 


    0 00bb08c0 77c7e020 77fbcae0      4c8      4c8        0        0      4c8        c        0
 1 00dd6fd0 0148cfe8 01683fe0      4c8      4c8        0        0      4c8        2        0
 2 00bb0aa0 008e8b84 77fbcc20      4c8        0        0        0        0        0        0
    3 00bb09e0 008e8704 77fbcba0      4c8        0        0        0        0        0        0
    4 00bb0a40 008e8944 77fbcbe0      4c8        0        0        0        0        0        0
    5 00bb0a10 008e8824 77fbcbc0      4c8        0        0        0        0        0        0
    5 00bb0a70 008e8a64 77fbcc00      4c8        0        0        0        0        0        0
    3 00bb0b00 008e8dc4 77fbcc60      4c8        0        0        0        0        0        0
    4 00bb0ad0 008e8ca4 77fbcc40      4c8        0        0        0        0        0        0
    4 00bb0b30 008e8ee4 77fbcc80      4c8        0        0        0        0        0        0
    5 00dd4fd0 0148afe4 0167ffe0      4c8        0        0        0        0        0        0
    2 00bb0e90 77c2da98 00908fe0      4c8      4c8        0        0      4c8       3a        0
 3 00bb0d70 77c2da08 008fcfe0      4c8        0        0        0        0        0        0

Los siguientes elementos aparecen en esta visualización de !cs -t:

  • InitThr es el identificador de subproceso del subproceso que inicializó el CS.

  • EnterThr es el identificador del subproceso que llamó a EnterCriticalSection la última vez.

  • WaitThr es el identificador del subproceso que encontró la sección crítica que otro subproceso tenía y esperaba por última vez.

  • TryEnThr es el identificador del subproceso que llamó a TryEnterCriticalSection la última vez.

  • LeaveThr es el identificador del subproceso que llamó a LeaveCriticalSection la última vez.

  • EnterCnt es el recuento de EnterCriticalSection.

  • WaitCnt es el recuento de contención.

Consulte también

!ntsdexts.locks

Visualización de una sección crítica

Tiempos de espera de sección crítica (modo de usuario)