Compartir a través de


!htrace

La extensión !htrace muestra información de seguimiento de la pila para uno o varios identificadores.

Sintaxis de modo de usuario

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

Sintaxis de modo kernel

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

Parámetros

Identificador Especifica el identificador cuyo seguimiento de pila se mostrará. Si Handle es 0 o se omite, se mostrarán los seguimientos de pila de todos los identificadores del proceso.

Process (solo modo kernel) Especifica el proceso cuyos identificadores se mostrarán. Si Process es 0 o se omite, se usa el proceso actual. En el modo de usuario, siempre se usa el proceso actual.

Max_Traces Especifica el número máximo de seguimientos de pila que se van a mostrar. En el modo de usuario, si se omite este parámetro, se mostrarán todos los seguimientos de pila del proceso de destino.

-enable (solo modo de usuario) Habilita el seguimiento de identificadores y toma la primera instantánea de la información de identificador para usarla como estado inicial mediante la opción -diff.

-snapshot (solo modo de usuario) Toma una instantánea de la información de identificador actual para usarla como estado inicial mediante la opción -diff.

-diff (solo modo de usuario) Compara la información de identificador actual con la última instantánea de información de identificador que se tomó. Muestra todos los identificadores que siguen abiertos.

-disable (solo modo de usuario) Deshabilita el seguimiento del controlador.

-?

Muestra un breve texto de ayuda para esta extensión en la ventana Comando del depurador.

Archivo DLL

Windows XP y versiones posteriores

Kdexts.dll Ntsdexts.dll

Información adicional

Para mostrar más información sobre un identificador específico, use la extensión !handle.

Para obtener información sobre los identificadores, consulte Microsoft Windows Internals por Mark Russinovich y David Solomon.

Comentarios

Para poder usar !htrace se debe habilitar el seguimiento de identificadores. Una manera de habilitar el seguimiento de identificadores es escribir el comando !htrace -enable. Cuando se habilita el seguimiento de identificadores, la información de seguimiento de pila se guarda cada vez que el proceso abre un identificador, cierra un identificador o hace referencia a un identificador no válido. Es esta información de seguimiento de pila que muestra !htrace.

Nota También puede habilitar el seguimiento de identificadores al activar el Comprobador de aplicaciones para el proceso de destino y al seleccionar la opción Identificadores.

Algunos de los seguimientos notificados por !htrace pueden ser de un contexto de proceso diferente. En este caso, es posible que las direcciones de retorno no se resuelvan correctamente en el contexto del proceso actual o que se resuelvan en los símbolos incorrectos.

En el ejemplo siguiente se muestra información sobre todos los identificadores del proceso 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.