次の方法で共有


!cs

!cs 拡張機能には、1 つ以上のクリティカル セクションまたはクリティカル セクション ツリー全体が表示されます。

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

パラメーター

パラメーター 説明
-s この情報が使用可能な場合は、各クリティカル セクションの初期化スタック トレースを表示します。
-l ロックされたクリティカル セクションのみを表示します。
-o 表示されているロックされたクリティカル セクションの所有者のスタックを表示します。
住所 表示するクリティカルセクションのアドレスを指定します。 このパラメーターを省略すると、デバッガーは現在のプロセスのすべての重要なセクションを表示します。
StartAddress 重要なセクションを検索するアドレス範囲の先頭を指定します。
EndAddress クリティカルセクションを検索するアドレス範囲の終わりを指定します。
-d DebugInfo に関連付けられている重要なセクションを表示します。
InfoAddress DebugInfo のアドレスを指定します。
-t クリティカル セクション ツリーを表示します。 -t オプションを使用する前に、ターゲット プロセスに対して アプリケーション検証者をアクティブ化し、ロックの使用を確認するオプションを選択する必要があります。
TreeAddress クリティカル セクション ツリーのルートのアドレスを指定します。 このパラメーターを省略するかゼロを指定すると、デバッガーは現在のプロセスのクリティカル セクション ツリーを表示します。
-? この拡張機能のヘルプ テキストをデバッガー コマンド ウィンドウに表示します

DLL

Exts.dll

追加情報

重要なセクション情報を表示できるその他のコマンドと拡張機能については、クリティカル セクションの表示を参照してください。 重要なセクションの詳細については、Microsoft Windows SDK ドキュメント、Windows Driver Kit (WDK) ドキュメント、および Mark Russinovich と David Solomon によるMicrosoft Windows Internalsを参照してください。

解説

!cs拡張機能には、デバッグ中のプロセスとNtdll.dllの完全なシンボル (型情報を含む) が必要です。

次の例は、!csの使用方法を示しています。 次のコマンドは、アドレス 0x7803B0F8のクリティカル セクションに関する情報を表示し、その初期化スタック トレースを示します。

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

次のコマンドは、DebugInfo がアドレス 0x6A262080にあるクリティカル セクションに関する情報を表示します。

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

次のコマンドは、現在のプロセスのすべてのアクティブなクリティカル セクションに関する情報を表示します。

## 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

...

次のコマンドは、クリティカル セクション ツリーを表示します。

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

この !cs -t 表示には、次の項目が表示されます:

  • InitThr は、CS を初期化したスレッドのスレッド ID です。

  • EnterThr は、最後に EnterCriticalSection を呼び出したスレッドの ID です。

  • WaitThr は、別のスレッドが所有し、最後にそれを待機していたクリティカル セクションを見つけたスレッドの ID です。

  • TryEnThr は、TryEnterCriticalSection を最後に呼び出したスレッドの ID です。

  • LeaveThrは、最後に LeaveCriticalSection を呼び出したスレッドの ID です

  • EnterCntEnterCriticalSection の数です。

  • WaitCnt は競合数です。

関連項目

!ntsdexts.locks

クリティカル セクションの表示

クリティカル セクションのタイムアウト (ユーザーモード)