!heap

简介

!heap扩展显示堆使用信息、控制堆管理器中的断点、检测泄漏的堆块、搜索堆块或显示页堆信息。此扩展支持段堆和NT堆。使用!heap没有参数列出所有堆及其类型的堆。

使用形式

!heap [HeapOptions] [ValidationOptions] [Heap] 
!heap -b [{alloc|realloc|free} [Tag]] [Heap | BreakAddress] 
!heap -B {alloc|realloc|free} [Heap | BreakAddress] 
!heap -l 
!heap -s [SummaryOptions] [StatHeapAddress] 
!heap -i HeapAddress
!heap -x [-v] Address 
!heap -p [PageHeapOptions] 
!heap -srch [Size] Pattern
!heap -flt FilterOptions
!heap -stat [-h Handle [-grp GroupBy [MaxDisplay]]]
!heap [-p] -?
!heap -triage [Handle | Address] 

参数

这些参数适用于Segment和NT堆。

  • -s
    指定正在请求摘要信息。如果省略SummaryOptions和StatHeapAddress,则显示与当前进程关联的所有堆的摘要信息。
  • SummaryOptions
    可以是以下选项的任意组合。SummaryOptions不区分大小写。输入!heap -s -?了解更多信息。
    选项效果

    -v

    验证所有数据块。

    -b BucketSize

    指定存储桶大小。 默认值为1024位。

    -d DumpBlockSize

    指定存储桶大小。

    -a

    转储所有堆块。

    -c

    指定应显示每个块的内容。

  • -triage [Handle |Address]
    使调试器自动搜索进程堆中的失败。如果将堆句柄指定为参数,则检查该堆;否则,将搜索所有堆中包含给定地址的堆,如果找到,则检查该堆。使用-triage是验证低碎片堆(LFH)损坏的唯一方法。
  • -x[-v]
    使调试器搜索包含指定地址的堆块。如果添加了-v,该命令将搜索当前进程的整个虚拟内存空间以查找指向此堆块的指针。
  • -l
    使调试器检测泄漏的堆块。
  • -iAddress-hHeapAddress
    显示有关指定 的信息。
  • Address
    指定要搜索的地址。
  • -?
    在调试器命令窗口中显示此扩展的简短帮助文本。使用!heap -?一般的帮助,而且!heap -p -?页面堆帮助。

这些参数仅适用于NT堆。