Condividi tramite


!htrace

L'estensione !htrace visualizza le informazioni di traccia dello stack per uno o più handle.

Sintassi in modalità utente

!htrace [Handle [Max_Traces]] 
!htrace -enable [Max_Traces]
!htrace -snapshot
!htrace -diff
!htrace -disable
!htrace -? 

Sintassi in modalità kernel

!htrace [Handle [Process [Max_Traces]]] 
!htrace -? 

Parametri

Handle Specifica l'handle di cui verrà visualizzata l'analisi dello stack. Se Handle è 0 o omesso, verranno visualizzate le analisi dello stack per tutti gli handle del processo.

Processo (solo modalità kernel) Specifica il processo i cui handle verranno visualizzati. Se Process è 0 o omesso, viene usato il processo corrente. In modalità utente, il processo corrente viene sempre usato.

Max_Traces Specifica il numero massimo di tracce dello stack da visualizzare. In modalità utente, se questo parametro viene omesso, verranno visualizzate tutte le tracce dello stack per il processo di destinazione.

-enable (solo modalità utente) Abilita la traccia dell'handle e acquisisce il primo snapshot delle informazioni sull'handle da usare come stato iniziale dall'opzione -diff .

-snapshot (solo modalità utente) Crea uno snapshot delle informazioni sull'handle corrente da usare come stato iniziale dall'opzione -diff .

-diff (solo modalità utente) Confronta le informazioni sull'handle corrente con l'ultimo snapshot delle informazioni sull'handle acquisite. Visualizza tutti gli handle ancora aperti.

-disable (solo modalità utente) Disabilita la traccia dell'handle.

-?

Visualizza un breve testo della Guida per questa estensione nella finestra Del comando del debugger.

DLL

Windows XP e versioni successive

Kdexts.dll Ntsdexts.dll

Informazioni aggiuntive

Per visualizzare altre informazioni su un handle specifico, usare l'estensione !handle .

Per informazioni sugli handle, vedere Microsoft Windows Internals di Mark Russinovich e David Solomon.

Osservazioni:

Prima di poter usare !htrace , è necessario abilitare la traccia dell'handle. Un modo per abilitare la traccia dell'handle consiste nell'immettere il comando !htrace -enable . Quando la traccia dell'handle è abilitata, le informazioni di analisi dello stack vengono salvate ogni volta che il processo apre un handle, chiude un handle o fa riferimento a un handle non valido. Si tratta di queste informazioni di traccia dello stack visualizzate !htrace .

Nota È anche possibile abilitare la traccia dell'handle attivando Application Verifier per il processo di destinazione e selezionando l'opzione Handle .

Alcune delle tracce segnalate da !htrace possono essere provenienti da un contesto di processo diverso. In questo caso, gli indirizzi restituiti potrebbero non essere risolti correttamente nel contesto del processo corrente o potrebbero risolversi nei simboli errati.

Nell'esempio seguente vengono visualizzate informazioni su tutti gli handle nel processo 0x81400300.

kd> !htrace 0 81400300
Process 0x81400300
ObjectTable 0xE10CCF60
## 

Handle 0x7CC - CLOSE:
0x8018FCB9: ntoskrnl!ExDestroyHandle+0x103
0x801E1D12: ntoskrnl!ObpCloseHandleTableEntry+0xE4
0x801E1DD9: ntoskrnl!ObpCloseHandle+0x85
0x801E1EDD: ntoskrnl!NtClose+0x19
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D

Handle 0x7CC - OPEN:
0x8018F44A: ntoskrnl!ExCreateHandle+0x94
0x801E3390: ntoskrnl!ObpCreateUnnamedHandle+0x10C
0x801E7317: ntoskrnl!ObInsertObject+0xC3
0x77DE23B2: KERNEL32!CreateSemaphoreA+0x66
0x010011C5: badhandle!main+0x45
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D

Handle 0x7DC - BAD REFERENCE:
0x8018F709: ntoskrnl!ExMapHandleToPointerEx+0xEA
0x801E10F2: ntoskrnl!ObReferenceObjectByHandle+0x12C
0x801902BE: ntoskrnl!NtSetEvent+0x6C
0x80154965: ntoskrnl!_KiSystemService+0xC4
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D

Handle 0x7DC - CLOSE:
0x8018FCB9: ntoskrnl!ExDestroyHandle+0x103
0x801E1D12: ntoskrnl!ObpCloseHandleTableEntry+0xE4
0x801E1DD9: ntoskrnl!ObpCloseHandle+0x85
0x801E1EDD: ntoskrnl!NtClose+0x19
0x010012C1: badhandle!mainCRTStartup+0xE3
## 0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D

Handle 0x7DC - OPEN:
0x8018F44A: ntoskrnl!ExCreateHandle+0x94
0x801E3390: ntoskrnl!ObpCreateUnnamedHandle+0x10C
0x801E7317: ntoskrnl!ObInsertObject+0xC3
0x77DE265C: KERNEL32!CreateEventA+0x66
0x010011A0: badhandle!main+0x20
0x010012C1: badhandle!mainCRTStartup+0xE3
0x77DE0B2F: KERNEL32!BaseProcessStart+0x3D
## 

Parsed 0x6 stack traces.
Dumped 0x5 stack traces.