Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ekstensi !cs menampilkan satu atau beberapa bagian penting atau seluruh pohon bagian penting.
!cs [-s] [-l] [-o]
!cs [-s] [-o] Address
!cs [-s] [-l] [-o] StartAddress EndAddress
!cs [-s] [-o] -d InfoAddress
!cs [-s] -t [TreeAddress]
!cs -?
Parameter
| Parameter | Deskripsi |
|---|---|
| -S | Menampilkan pelacakan tumpukan inisialisasi setiap bagian penting, jika informasi ini tersedia. |
| -L | Tampilkan hanya bagian penting yang dikunci. |
| -O | Menampilkan tumpukan pemilik untuk setiap bagian penting terkunci yang sedang ditampilkan. |
| Alamat | Menentukan alamat bagian penting yang akan ditampilkan. Jika Anda menghilangkan parameter ini, debugger menampilkan semua bagian penting dalam proses saat ini. |
| StartAddress | Menentukan awal rentang alamat untuk mencari bagian penting. |
| EndAddress | Menentukan akhir rentang alamat untuk mencari bagian penting. |
| -d | Menampilkan bagian penting yang terkait dengan DebugInfo. |
| InfoAddress | Menentukan alamat DebugInfo. |
| -T | Menampilkan pohon bagian penting. Sebelum dapat menggunakan opsi -t , Anda harus mengaktifkan Pemverifikasi Aplikasi untuk proses target dan memilih opsi Periksa penggunaan kunci. |
| TreeAddress | Menentukan alamat akar pohon bagian penting. Jika Anda menghilangkan parameter ini atau menentukan nol, debugger menampilkan pohon bagian penting untuk proses saat ini. |
| -? | Menampilkan beberapa teks Bantuan untuk ekstensi ini di jendela Perintah Debugger. |
DLL
Exts.dll
Informasi Tambahan
Untuk perintah dan ekstensi lain yang dapat menampilkan informasi bagian penting, lihat Menampilkan Bagian Penting. Untuk informasi selengkapnya tentang bagian penting, lihat dokumentasi Microsoft Windows SDK, dokumentasi Windows Driver Kit (WDK), dan Microsoft Windows Internals oleh Mark Russinovich dan David Solomon.
Keterangan
Ekstensi !cs memerlukan simbol penuh (termasuk informasi jenis) untuk proses yang sedang di-debug dan untuk Ntdll.dll.
Contoh berikut menunjukkan kepada Anda cara menggunakan !cs. Perintah berikut menampilkan informasi tentang bagian penting di alamat 0x7803B0F8 dan memperlihatkan jejak tumpukan inisialisasinya.
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
Perintah berikut menampilkan informasi tentang bagian penting yang DebugInfo-nya berada di alamat 0x6A262080.
0:001> !cs -d 0x6A262080
DebugInfo = 0x6A262080
Critical section = 0x7803B0F8 (MSVCRT!__app_type+0x4)
NOT LOCKED
LockSemaphore = 0x0
SpinCount = 0x0
Perintah berikut menampilkan informasi tentang semua bagian penting aktif dalam proses saat ini.
## 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
...
Perintah berikut menampilkan pohon bagian penting.
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
Item berikut muncul dalam tampilan !cs -t ini:
InitThr adalah ID utas untuk utas yang menginisialisasi CS.
EnterThr adalah ID utas yang disebut EnterCriticalSection terakhir kali.
WaitThr adalah ID utas yang menemukan bagian penting yang dimiliki utas lain dan menunggunya terakhir kali.
TryEnThr adalah ID utas yang disebut TryEnterCriticalSection terakhir kali.
LeaveThr adalah ID utas yang disebut LeaveCriticalSection terakhir kali
EnterCnt adalah hitungan EnterCriticalSection.
WaitCnt adalah jumlah pertikaian.
Lihat juga
Batas Waktu Bagian Penting (mode pengguna)