我想解析完整的崩溃转储(* .dmp)文件并获取私有字节数据。我知道SysInternals的VMMap可以告诉我我的私有字节,堆等是多少,但我需要的是如果我有转储,我应该能够解析它并获得Heap(托管堆)结构和数据堆。通过阅读PEB然后走过堆,我已经完成了这项工作。
我无法弄清楚的是如何读取私有字节(Heap除外,它应该是本机代码的过程数据)。任何人都可以指出我正确的方向,以便我能够从崩溃转储中解析除堆之外的专用字节。
感谢。
答案 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堆,来自自定义分配器的内存,以及地址空间中不属于其他分类的所有其他区域。