!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 です

  • EnterCnt はEnterCriticalSection の数です

  • WaitCnt は 、コンテンツの数です。