WinDbg는 일반적으로 명령 시리즈를 사용 ---! Htrace

! htrace

간략한 소개

! Htrace 하나 개 이상의 핸들의 표시 스택 추적 정보를 확장했다.

양식을 사용

  • 用户模式
    ! htrace [ 핸들 [ Max_Traces ]
    ! htrace -enable [ Max_Traces ]
    htrace -snapshot!
    htrace -diff!
    htrace -disable!
    htrace! -?
  • 커널 모드
    ! HTRACE [ 핸들 [ 프로세스 [ Max_Traces ]]]
  • ! htrace -?

매개 변수

  • 핸들
    을 지정에게 그것의 스택 트레이스를 보여 핸들을. 핸들은 0 또는 생략 된 경우, 처리는 모든 핸들 스택 트레이스가 표시된다.
  • 프로세스
    (커널 모드 전용) 그 핸들이 표시됩니다 처리합니다. 프로세스는 0 생략 현재 프로세스이면. 사용자 모드에서는 항상 현재 프로세스를 사용합니다.
  • Max_Traces는
    최대 번호를 표시하는 스택 추적을 지정합니다. 이 매개 변수를 생략하면 사용자 모드에서, 대상 프로세스의 스택 추적이 모두 표시됩니다.
  • -enable
    (사용자 모드 만 해당) 초기 상태로 사용 -diff 첫 번째 스냅 샷 핸들 정보를 제공하는 핸들 추적, 옵션을 활성화합니다.
  • -snapshot
    (사용자 모드 만 해당) 초기 상태 -diff 옵션으로 사용되는 현재의 핸들 정보의 스냅 샷을 촬영합니다.
  • -diff
    (전용 사용자 모드) 마지막 스냅 샷을 비교하여 얻어진 현재의 핸들 정보와 핸들 정보를 제공합니다. 모든 열려있는 핸들을 표시합니다.
  • -disable
    (사용자 모드는, 윈도우 서버 2003 및 이후 버전 만 해당) 핸들 추적을 사용할 수 없습니다. 지금 WindowsXP에서 추적을 처리 할 수있는 종료 프로세스의 유일한 목표는 사용할 수 없습니다.
  • -
    디버거 명령 창에서 몇 가지 간단한 도움말 텍스트의 확장을 표시합니다.

지원 환경

윈도우 2000

없는

Windows XP 및 이후 버전

Kdexts Ntsdexts

당신은 사용! Htrace에 핸들을 추적 사용시. 추적하는 방법은 핸들 입력! 명령을 Htrace이 활성화 사용할 수 있습니다. 각 프로세스가 핸들을 열고 핸들을 추적하도록 설정하면, 핸들을 폐쇄하거나 핸들이 유효하지 않은 참조하면, 스택 추적 정보를 저장합니다. 이 스택 추적! Htrace 표시입니다. 핸들은 또한 옵션을 선택하고 응용 프로그램 검증 핸들 추적을 활성화하려면 대상 프로세스를 활성화하여 할 수 있습니다.

! Htrace는 일부 추적 보고서는 다른 프로세스 컨텍스트에서 올 수 있습니다. 이 경우, 반환 주소는 현재 프로세스의 맥락에서 제대로 해결되지 않을 수 있습니다, 또는 잘못된 기호로 해석 할 수있다.

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.

추천

출처www.cnblogs.com/yilang/p/11917938.html