windbg:如何查找已加载模块的大小

时间:2013-09-11 01:08:25

标签: windbg

在windbg中,我可以列出带有lm的加载模块。

如何找到这些组件的内存占用量?

我正在分析一个怀疑使用太多内存的进程的转储,我注意到的一件事是程序集的数量,但不确定它们在内存中占用的大小。

此外,他们似乎并没有处于连续的记忆位置。或者他们是否以某种方式排列lm的输出?

谢谢!

2 个答案:

答案 0 :(得分:2)

!address -summary为您提供了一个很好的概述。 检查图像行

0:008> !address -summary

--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free                                    212          b13cb000 (   2.769 Gb)           69.23%
Heap                                    455          25281000 ( 594.504 Mb)  47.18%   14.51%
<unknown>                               861          2168d000 ( 534.551 Mb)  42.42%   13.05%
Image                                   662           4e8e000 (  78.555 Mb)   6.23%    1.92%
Stack                                   156           3400000 (  52.000 Mb)   4.13%    1.27%
Other                                    39             54000 ( 336.000 kb)   0.03%    0.01%
TEB                                      52             34000 ( 208.000 kb)   0.02%    0.00%
PEB                                       1              1000 (   4.000 kb)   0.00%    0.00%

答案 1 :(得分:1)

您可以使用lmvm module_name检查每个模块的大小。有一个ImageSize输出,表示该模块的十六进制大小。

编辑:另一种方法是首先lm显示所有模块,然后使用!lmi start_address!lmi module_name获取有关特定模块的信息。 !lmi有一个尺寸字段,表示图像尺寸。

请注意,对于加载的.NET 4本机映像,您必须使用!lmi start_address,因为模块名称解析失败。