在WinDbg中解析故障转储的私有字节(托管堆除外)?

时间:2011-02-03 11:15:28

标签: windbg crash-dumps memory-dump

我想解析完整的崩溃转储(* .dmp)文件并获取私有字节数据。我知道SysInternals的VMMap可以告诉我我的私有字节,堆等是多少,但我需要的是如果我有转储,我应该能够解析它并获得Heap(托管堆)结构和数据堆。通过阅读PEB然后走过堆,我已经完成了这项工作。

我无法弄清楚的是如何读取私有字节(Heap除外,它应该是本机代码的过程数据)。任何人都可以指出我正确的方向,以便我能够从崩溃转储中解析除堆之外的专用字节。

感谢。

1 个答案:

答案 0 :(得分:5)

!address -summary

在第一部分中,您将获得用法明细:

--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free                                    170          6f958000 (   1.743 Gb)           87.18%
<unknown>                               477           6998000 ( 105.594 Mb)  40.21%    5.16%
Stack                                   417           5d00000 (  93.000 Mb)  35.42%    4.54%
Image                                   253           3970000 (  57.438 Mb)  21.87%    2.80%
Heap                                     20            600000 (   6.000 Mb)   2.28%    0.29%
TEB                                      93             5d000 ( 372.000 kb)   0.14%    0.02%
Other                                     9             32000 ( 200.000 kb)   0.07%    0.01%
PEB                                       1              1000 (   4.000 kb)   0.00%    0.00%

未知将是虚拟分配。

列出您可以运行的未知内存区域:

!address -f:VAR

调试器中定义的VAR.chm - 忙区域。这些区域包括所有虚拟分配块,SBH堆,来自自定义分配器的内存,以及地址空间中不属于其他分类的所有其他区域。