Windbg 怎么跑!dumpheap-在所有堆中的第2代上死亡?

Windbg 怎么跑!dumpheap-在所有堆中的第2代上死亡?,windbg,Windbg,我有8个由报告的托管gc堆!eeheap-gc: 0:000> !eeheap -gc Number of GC Heaps: 8 ------------------------------ Heap 0 (00000000009a2c50) generation 0 starts at 0x00000000d92e3aa0 generation 1 starts at 0x00000000d8cdb128 generation 2 starts at 0x000000007fff100

我有8个由
报告的托管gc堆!eeheap-gc

0:000> !eeheap -gc
Number of GC Heaps: 8
------------------------------
Heap 0 (00000000009a2c50)
generation 0 starts at 0x00000000d92e3aa0
generation 1 starts at 0x00000000d8cdb128
generation 2 starts at 0x000000007fff1000
ephemeral segment allocation context: none
 segment     begin allocated  size
000000007fff0000  000000007fff1000  00000000d93edab8  0x593fcab8(1497352888)
Large object heap starts at 0x000000047fff1000
 segment     begin allocated  size
000000047fff0000  000000047fff1000  0000000487fabf00  0x7fbaf00(133934848)
00000004e6400000  00000004e6401000  00000004ee3af2f8  0x7fae2f8(133882616)
000000050e400000  000000050e401000  00000005152f8578  0x6ef7578(116356472)
0000000572400000  0000000572401000  00000005756e8ad8  0x32e7ad8(53377752)
Heap Size:               Size: 0x73544d00 (1934904576) bytes.
------------------------------
Heap 1 (00000000009ad690)
generation 0 starts at 0x00000001609a9cc8
generation 1 starts at 0x000000016072f780
generation 2 starts at 0x00000000ffff1000
ephemeral segment allocation context: none
 segment     begin allocated  size
00000000ffff0000  00000000ffff1000  0000000161bf8f50  0x61c07f50(1640005456)
Large object heap starts at 0x0000000487ff1000
 segment     begin allocated  size
0000000487ff0000  0000000487ff1000  000000048ffea910  0x7ff9910(134191376)
0000000044b50000  0000000044b51000  000000004cb44978  0x7ff3978(134166904)
000000051e400000  000000051e401000  000000052575aae0  0x7359ae0(120953568)
000000057a400000  000000057a401000  000000057c2e8610  0x1ee7610(32405008)
Heap Size:               Size: 0x7ae362c8 (2061722312) bytes.
...
我想运行
!dumpheap-dead
命令仅适用于gen 2和LOH,但是,我有点困惑:

  • 命令清楚地说明了gen 2从哪里开始,但我不清楚它在哪里结束。例如,对于堆0,我给出了
    -start 0x000000007fff1000
    ,但是
    -end
    中的内容是什么?这是第一代的开始吗
  • 我有8堆,所以我想我必须运行
    !dumpheap—第2代的死机次数
    8次。对于LOH,它似乎跨越多个片段,次数甚至更高。有没有一种方法可以自动化所有LOH和gen 2中所有这些死物的倾倒过程

  • 对于1:是的,第1代的开始是第2代的结束,因为GC.LOH有时被称为第3代:
    !转储堆-第3代
    !dumpheap没有
    -gen
    参数。您使用哪个版本的WinDBG?抱歉,它似乎是在PSSCOR版本中,而不是在SOS中。