2011-02-03 32 views
5

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

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

谢谢。

+0

你能澄清你的问题吗?你应该能够访问内存中的任何位置,一旦你有它加载了一般命令(x,dX,s等)保存的转储 – aaron 2011-05-08 06:05:21

回答

5

解决-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% 

未知将虚拟allocs。

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

解决-f:VAR

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

+1

一旦我做!address -f:VAR接下来是什么?我只是得到一堆内存地址。理解它们的最好方法是什么? – Mark 2012-01-26 17:37:38