6

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

我无法弄清楚的是如何读取私有字节(除了堆,它应该是本机代码的进程数据)。谁能指出我正确的方向,以便我能够解析崩溃转储中的堆以外的私有字节。

谢谢。

4

1 回答 1

6
!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

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

于 2011-12-13T12:36:35.350 回答