SOS windbg 中的啥命令只能为 Gen 2 和 LOH 转储堆?

Posted

技术标签:

【中文标题】SOS windbg 中的啥命令只能为 Gen 2 和 LOH 转储堆?【英文标题】:What command in SOS windbg can dump heap for Gen 2 and LOH only?SOS windbg 中的什么命令只能为 Gen 2 和 LOH 转储堆? 【发布时间】:2018-07-27 14:49:57 【问题描述】:

我有一个高内存转储要调查。当我使用 !eeheap -gc 时,它会提供 20 个堆,每个堆都有 Gen 2 和 LOH 地址信息和大小信息。但是,我想获得 Gen 2 和 LOH 的总体摘要,并查看有关 Gen 2 和 LOH 中哪些对象占用内存的统计摘要,如何在带有 SOS 的 windbg 中做到这一点?非常感谢您的帮助。

!eeheap -gc

GC 堆数:20

堆 0 (000000293d5c4120) 第 0 代从 0x000000294c35d740 开始 第 1 代从 0x000000294c34ceb0 开始 第 2 代从 0x000000293e181000 开始 临时段分配上下文:无 段开始分配的大小 000000293e180000 000000293e181000 000000294c607758 0xe486758(239626072) 大对象堆从 0x0000002e3e181000 开始 段开始分配的大小 0000002e3e180000 0000002e3e181000 0000002e41f08640 0x3d87640(64517696) 0000002f5bc50000 0000002f5bc51000 0000002f5c190b88 0x53fb88(5503880)

堆大小:大小:0x1274d920 (309647648) 字节。

堆 1 (000000293d5eac10) 第 0 代从 0x000000298b1f0440 开始 第 1 代从 0x000000298b14c8c0 开始 第 2 代从 0x000000297e181000 开始 临时段分配上下文:无 段开始分配的大小 000000297e180000 000000297e181000 000000298b5fe458 0xd47d458(222811224) 大对象堆从 0x0000002e42181000 开始 段开始分配的大小 0000002e42180000 0000002e42181000 0000002e43462d40 0x12e1d40(19799360) 0000002f75c50000 0000002f75c51000 0000002f787ccda8 0x2b7bda8(45596072)

堆大小:大小:0x112daf40 (288206656) 字节。

堆 2 (000000293d611700) 第 0 代从 0x00000029ca38ff40 开始 第 1 代从 0x00000029ca15dfd0 开始 第 2 代从 0x00000029be181000 开始 临时段分配上下文:无 段开始分配的大小 00000029be180000 00000029be181000 00000029ca7635d0 0xc5e25d0(207496656) 大对象堆从 0x0000002e46181000 开始 段开始分配的大小 0000002e46180000 0000002e46181000 0000002e46e289b0 0xca79b0(13269424) 0000002fdfc50000 0000002fdfc51000 0000002fe4f2d2e0 0x52dc2e0(86885088) 0000002fa5c50000 0000002fa5c51000 0000002fa8bf5258 0x2fa4258(49955416)

堆大小:大小:0x1550a4b8 (357606584) 字节。

堆 3 (000000293d614da0) 第 0 代从 0x0000002a0ce42bb8 开始 第 1 代从 0x0000002a0cdac958 开始 第 2 代从 0x00000029fe181000 开始 临时段分配上下文:无 段开始分配的大小 00000029fe180000 00000029fe181000 0000002a0cfb4bd0 0xee33bd0(249773008) 大对象堆从 0x0000002e4a181000 开始 段开始分配的大小 0000002e4a180000 0000002e4a181000 0000002e4dffb0b8 0x3e7a0b8(65511608) 0000002f6bc50000 0000002f6bc51000 0000002f6c09dff8 0x44cff8(4509688)

堆大小:大小:0x130fac80 (319794304) 字节。

堆 4 (000000293d617e80) 第 0 代从 0x0000002a4d26e430 开始 第 1 代从 0x0000002a4d0ebcd0 开始 第 2 代从 0x0000002a3e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002a3e180000 0000002a3e181000 0000002a4d2f6448 0xf175448(253187144) 大对象堆从 0x0000002e4e181000 开始 段开始分配的大小 0000002e4e180000 0000002e4e181000 0000002e50efad20 0x2d79d20(47684896) 0000002f57c50000 0000002f57c51000 0000002f5a4e3828 0x2892828(42543144) 0000003019c50000 0000003019c51000 000000301c929ab0 0x2cd8ab0(47024816)

堆大小:大小:0x1745a440 (390440000) 字节。

堆 5 (0000002e9d0b9f40) 第 0 代从 0x0000002a8b579448 开始 第 1 代从 0x0000002a8b4adb98 开始 第 2 代从 0x0000002a7e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002a7e180000 0000002a7e181000 0000002aa028f0d0 0x2210e0d0(571531472) 大对象堆从 0x0000002e52181000 开始 段开始分配的大小 0000002e52180000 0000002e52181000 0000002e55c4fa00 0x3acea00(61663744) 0000002f46420000 0000002f46421000 0000002f48524938 0x2103938(34617656)

堆大小:大小:0x27ce0408 (667812872) 字节。

堆 6 (0000002e9d0df9a0) 第 0 代从 0x0000002aca9dc170 开始 第 1 代从 0x0000002aca964f80 开始 第 2 代从 0x0000002abe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002abe180000 0000002abe181000 0000002ae0aa0050 0x2291f050(579989584) 大对象堆从 0x0000002e56181000 开始 段开始分配的大小 0000002e56180000 0000002e56181000 0000002e59677d00 0x34f6d00(55536896) 0000002fa9c50000 0000002fa9c51000 0000002fa9e81490 0x230490(2294928)

堆大小:大小:0x260461e0 (637821408) 字节。

堆 7 (0000002e9d105f30) 第 0 代从 0x0000002b0c4fbaf0 开始 第 1 代从 0x0000002b0c3da9f0 开始 第 2 代从 0x0000002afe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002afe180000 0000002afe181000 0000002b20a14f38 0x22893f38(579419960) 大对象堆从 0x0000002e5a181000 开始 段开始分配的大小 0000002e5a180000 0000002e5a181000 0000002e5d800950 0x367f950(57145680) 0000002f5fc50000 0000002f5fc51000 0000002f62870dc8 0x2c1fdc8(46267848)

堆大小:大小:0x28b33650 (682833488) 字节。

堆 8 (0000002e9d12b430) 第 0 代从 0x0000002b4b8c6000 开始 第 1 代从 0x0000002b4b8baab0 开始 第 2 代从 0x0000002b3e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002b3e180000 0000002b3e181000 0000002b659eac80 0x27869c80(663133312) 大对象堆从 0x0000002e5e181000 开始 段开始分配的大小 0000002e5e180000 0000002e5e181000 0000002e608d1790 0x2750790(41224080) 0000002f8fc50000 0000002f8fc51000 0000002f913efcc8 0x179ecc8(24767688)

堆大小:大小:0x2b7590d8 (729125080) 字节。

堆 9 (0000002e9d130cc0) 第 0 代从 0x0000002b8e3bea38 开始 第 1 代从 0x0000002b8e27c968 开始 第 2 代从 0x0000002b7e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002b7e180000 0000002b7e181000 0000002b8e404a50 0x10283a50(271071824) 大对象堆从 0x0000002e62181000 开始 段开始分配的大小 0000002e62180000 0000002e62181000 0000002e66069d50 0x3ee8d50(65965392) 0000002f4a420000 0000002f4a421000 0000002f4cf3e4d0 0x2b1d4d0(45208784)

堆大小:大小:0x16c89c70 (382246000) 字节。

堆 10 (0000002e9d133f80) 第 0 代从 0x0000002bcd04ba08 开始 第 1 代从 0x0000002bccfa8980 开始 第 2 代从 0x0000002bbe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002bbe180000 0000002bbe181000 0000002bcd220eb0 0xf09feb0(252313264) 大对象堆从 0x0000002e66181000 开始 段开始分配的大小 0000002e66180000 0000002e66181000 0000002e691d6a10 0x3055a10(50682384) 0000002fc9c50000 0000002fc9c51000 0000002fcc1adc78 0x255cc78(39177336) 0000002f7dc50000 0000002f7dc51000 0000002f80dc7c68 0x3176c68(51866728)

堆大小:大小:0x177c91a0 (394039712) 字节。

堆 11 (0000002e9d136fb0) 第 0 代开始于 0x0000002c0cb208a0 第 1 代从 0x0000002c0c9d8c60 开始 第 2 代从 0x0000002bfe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002bfe180000 0000002bfe181000 0000002c0d542f38 0xf3c1f38(255598392) 大对象堆从 0x0000002e6a181000 开始 段开始分配的大小 0000002e6a180000 0000002e6a181000 0000002e6bab24f0 0x19314f0(26416368) 0000002f79c50000 0000002f79c51000 0000002f7d5d6700 0x3985700(60315392)

堆大小:大小:0x14678b28 (342330152) 字节。

堆 12 (0000002e9d139e30) 第 0 代从 0x0000002c4e14ca58 开始 第 1 代从 0x0000002c4e0f62f8 开始 第 2 代从 0x0000002c3e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002c3e180000 0000002c3e181000 0000002c4e27c4b8 0x100fb4b8(269464760) 大对象堆从 0x0000002e6e181000 开始 段开始分配的大小 0000002e6e180000 0000002e6e181000 0000002e6eac4528 0x943528(9712936) 0000002efbb90000 0000002efbb91000 0000002effaa5750 0x3f14750(66144080) 0000002fd1c50000 0000002fd1c51000 0000002fd2f887c0 0x13377c0(20150208)

堆大小:大小:0x15c8a8f0 (365471984) 字节。

堆 13 (0000002e9d13de20) 第 0 代从 0x0000002c8bf4cfc0 开始 第 1 代从 0x0000002c8be39ba0 开始 第 2 代从 0x0000002c7e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002c7e180000 0000002c7e181000 0000002c92e857a0 0x14d047a0(349194144) 大对象堆从 0x0000002e72181000 开始 段开始分配的大小 0000002e72180000 0000002e72181000 0000002e7617e498 0x3ffd498(67097752) 0000002fcdc50000 0000002fcdc51000 0000002fcf4abb08 0x185ab08(25537288)

堆大小:大小:0x1a55c740 (441829184) 字节。

堆 14 (0000002e9d1410e0) 第 0 代从 0x0000002ccc867be0 开始 第 1 代从 0x0000002ccc845b18 开始 第 2 代从 0x0000002cbe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002cbe180000 0000002cbe181000 0000002ccc917828 0xe796828(242837544) 大对象堆从 0x0000002e76181000 开始 段开始分配的大小 0000002e76180000 0000002e76181000 0000002e7973ff48 0x35bef48(56356680) 0000002f63c50000 0000002f63c51000 0000002f6762ff70 0x39def70(60682096) 0000002f9fc50000 0000002f9fc51000 0000002fa419af50 0x4549f50(72654672)

堆大小:大小:0x19c7e630 (432530992) 字节。

堆 15 (0000002e9d144c30) 第 0 代从 0x0000002d0d4df148 开始 第 1 代从 0x0000002d0d093900 开始 第 2 代从 0x0000002cfe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002cfe180000 0000002cfe181000 0000002d0d55d160 0xf3dc160(255705440) 大对象堆从 0x0000002e7a181000 开始 段开始分配的大小 0000002e7a180000 0000002e7a181000 0000002e7d4b10d8 0x33300d8(53674200) 0000002f05b90000 0000002f05b91000 0000002f08104950 0x2573950(39270736)

堆大小:大小:0x14c7fb88 (348650376) 字节。

堆 16 (0000002e9d149fa0) 第 0 代从 0x0000002d4cebbc98 开始 第 1 代从 0x0000002d4ce31670 开始 第 2 代从 0x0000002d3e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002d3e180000 0000002d3e181000 0000002d4cf4fac8 0xedceac8(249359048) 大对象堆从 0x0000002e7e181000 开始 段开始分配的大小 0000002e7e180000 0000002e7e181000 0000002e809b3508 0x2832508(42149128) 0000002f4fc50000 0000002f4fc51000 0000002f50ab68b0 0xe658b0(15095984)

堆大小:大小:0x12466880 (306604160) 字节。

堆 17 (0000002e9d5d39b0) 第 0 代从 0x0000002d8eb9ffc0 开始 第 1 代从 0x0000002d8eadcd88 开始 第 2 代从 0x0000002d7e181000 开始 临时段分配上下文:无 段开始分配的大小 0000002d7e180000 0000002d7e181000 0000002d8eebfd8 0x10a6afd8(279359448) 大对象堆从 0x0000002e82181000 开始 段开始分配的大小 0000002e82180000 0000002e82181000 0000002e8535c7b0 0x31db7b0(52279216) 0000002f85c50000 0000002f85c51000 0000002f8b727360 0x5ad6360(95249248)

堆大小:大小:0x1971cae8 (426887912) 字节。

堆 18 (0000002e9d5d69c0) 第 0 代从 0x0000002dcc480040 开始 第 1 代从 0x0000002dcc4749b8 开始 第 2 代从 0x0000002dbe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002dbe180000 0000002dbe181000 0000002dcc4da058 0xe359058(238391384) 大对象堆从 0x0000002e86181000 开始 段开始分配的大小 0000002e86180000 0000002e86181000 0000002e88e4a638 0x2cc9638(46962232) 0000002f53c50000 0000002f53c51000 0000002f5608e6d0 0x243d6d0(38000336) 0000002f8bc50000 0000002f8bc51000 0000002f8e3a7920 0x2756920(41249056)

堆大小:大小:0x15bb6680 (364603008) 字节。

堆 19 (0000002e9d5d09a0) 第 0 代从 0x0000002e0ec60b98 开始 第 1 代从 0x0000002e0ebf5790 开始 第 2 代从 0x0000002dfe181000 开始 临时段分配上下文:无 段开始分配的大小 0000002dfe180000 0000002dfe181000 0000002e0ecc09c8 0x10b3f9c8(280230344) 大对象堆从 0x0000002e8a181000 开始 段开始分配的大小 0000002e8a180000 0000002e8a181000 0000002e8ccc84f0 0x2b474f0(45380848) 0000002f6fc50000 0000002f6fc51000 0000002f706390c0 0x9e80c0(10387648)

堆大小:大小:0x1406ef78 (335998840) 字节。

GC 堆大小:大小:0x1fc193f68 (8524480360) 字节。

【问题讨论】:

【参考方案1】:

!sosex.dumpgen 2!dumpgen 3 可以解决问题。 Gen3 显然用词不当,但它是一种简单的 LOH 方法。或者,您可以致电!sosex.dumpgen loh。我相信 !sos.dumpheap 现在也有一个用于生成的参数。

【讨论】:

谢谢史蒂夫,抱歉后续问题,我输入 谢谢 Steven,我试过这个 :000> !dumpgen 3 No export dumpgen found 我可以确认 sos 已加载,但无法识别 dumpgen。我需要事先做些什么吗?谢谢 @SkyLine: Steve Johnson 是sosex 的作者 awesome :) 我找到了一个指令并获得了 sosex 作品,这很棒,很好奇,有谁知道如何仅使用 sos 来查找它?我们的调试环境默认没有内置 sosex @JeffreyLeCours:我很高兴能提供帮助并回馈社区,我从中学到了很多东西。 WinDbg 很好,但并不完全不言自明。

以上是关于SOS windbg 中的啥命令只能为 Gen 2 和 LOH 转储堆?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 WinDbg 中加载 SOS

WinDbg 无法加载 SOS.dll

CLR探索系列:Windbg+SOS动态调试分析托管代码

WinDbg 加载 dotnet core 的 sos.dll 辅助调试方法

windebug

如何使用 WinDBG 列出所有托管线程的调用堆栈?