• WinDbg常用命令系列---!htrace


    !htrace

    简介

    !htrace扩展显示一个或多个句柄的堆栈跟踪信息。

    使用形式

    • 用户模式
      !htrace [Handle [Max_Traces]]
      !htrace -enable [Max_Traces]
      !htrace -snapshot
      !htrace -diff
      !htrace -disable
      !htrace -?
    • 内核模式
      !htrace [Handle [Process [Max_Traces]]]
    • !htrace -?

    参数

    • Handle
      指定将显示其堆栈跟踪的句柄。如果Handle为0或省略,则将显示进程中所有句柄的堆栈跟踪。
    • Process
      (仅限内核模式)指定将显示其句柄的进程。如果进程为0或省略,则使用当前进程。在用户模式下,始终使用当前进程。
    • Max_Traces
      指定要显示的堆栈跟踪的最大数目。在用户模式下,如果省略此参数,则将显示目标进程的所有堆栈跟踪。
    • -enable
      (仅限用户模式)启用句柄跟踪,并通过-diff选项将句柄信息的第一个快照用作初始状态。
    • -snapshot
      (仅限用户模式)获取当前句柄信息的快照,以用作-diff选项的初始状态。
    • -diff
      (仅限用户模式)将当前句柄信息与上次获取的句柄信息快照进行比较。显示所有仍打开的句柄。
    • -disable
      (仅限用户模式;仅限Windows Server 2003及更高版本)禁用句柄跟踪。在WindowsXP中,只有终止目标进程才能禁用句柄跟踪。
    • -?
      在调试器命令窗口中显示此扩展的一些简短帮助文本。

    支持环境

    Windows 2000

    不可用

    Windows XP 和更高版本

    Kdexts Ntsdexts

    备注

    启用句柄跟踪后,才能使用!htrace。启用句柄跟踪的一种方法是输入!htrace-enable命令。启用句柄跟踪时,每次进程打开句柄、关闭句柄或引用无效句柄时,都会保存堆栈跟踪信息。就是这个堆栈跟踪信息!htrace显示。还可以通过激活目标进程的应用程序验证器并选择Handles选项来启用句柄跟踪。

    ! 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.
  • 相关阅读:
    <二>基于Django 简单后台管理页面
    单页面中使用vue和iview、echarts,引用组件
    vuecli更新
    vuex promise async await
    vue父子组件之间传值
    常用正则
    vue项目利用loadsh实现防抖和节流
    vue项目实现按钮的权限
    使用内存虚拟硬盘 提高ArcGIS server并发性能的一种方法
    esri联邦用户大会 总结
  • 原文地址:https://www.cnblogs.com/yilang/p/11917938.html
Copyright © 2020-2023  润新知