!htrace
L’extension !htrace affiche les informations de trace de pile pour un ou plusieurs descripteurs.
Syntaxe du mode utilisateur
!htrace [Handle [Max_Traces]]
!htrace -enable [Max_Traces]
!htrace -snapshot
!htrace -diff
!htrace -disable
!htrace -?
Syntaxe du mode noyau
!htrace [Handle [Process [Max_Traces]]]
!htrace -?
Paramètres
Descripteur : indique le descripteur dont la trace de pile s’affiche. Si la valeur du Descripteur est 0 ou est omise, les traces de pile pour tous les descripteur du processus sont affichées.
Processus : (mode noyau uniquement) indique le processus dont les descripteurs sont affichés. Si la valeur du Processus est 0 ou est omise, le processus en cours est utilisé. En mode utilisateur, le processus en cours est toujours utilisé.
Max_Traces : indique le nombre maximal de traces de pile à afficher. En mode utilisateur, si ce paramètre est omis, toutes les traces de pile pour le processus cible s’affichent.
-enable : (mode utilisateur uniquement) active le suivi du descripteur et prend la première instantané des informations du ce dernier à utiliser comme état initial par l’option -diff.
-snapshot : (mode utilisateur uniquement) prend une instantané des informations du descripteur actuel à utiliser comme état initial par l’option -diff.
-diff : (mode utilisateur uniquement) compare les informations du descripteur actuel avec la dernière instantané des informations du descripteur qui a été prise. Affiche tous les descripteur qui sont toujours ouverts.
-disable : (mode utilisateur uniquement) désactive le suivi du descripteur.
-?
Affiche un court texte d’aide pour cette extension dans la fenêtre de commande de débogueur.
DLL
Windows XP et versions ultérieures
Kdexts.dll Ntsdexts.dll
Informations supplémentaires
Pour afficher des informations supplémentaires sur un descripteur spécifique, utilisez l’extension !handle.
Pour plus d’informations sur les descripteurs, veuillez consulter Microsoft Windows Internals (Au cœur de Windows) de Mark Russinovich et David Solomon.
Notes
Avant d’utiliser !htrace, le suivi du descripteur doit être activé. On peut le faire en saisissant la commande !htrace -enable. Lorsque le suivi du descripteur est activé, les informations de suivi de pile sont enregistrées chaque fois que le processus ouvre ou fermer un descripteur, ou fait référence à un descripteur non valide. Ce sont ces informations de trace de pile que !htrace affiche.
Remarque : vous pouvez également activer le suivi du descripteur en activant Application Verifier pour le processus cible et en sélectionnant l’option Descripteurs.
Certaines des traces signalées par !htrace peuvent provenir d’un contexte de processus différent. Dans un tel cas, les adresses de retour peuvent ne pas être résolues correctement dans le contexte de processus actuel, ou peuvent résoudre les symboles erronés.
L’exemple suivant présente des informations sur tous les descripteurs du processus 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.