windbg - 解析 WinDbg 中的故障转储以获取私有(private)字节(托管堆除外)?

标签 windbg crash-dumps memory-dump

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

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

谢谢。

最佳答案

!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 - 繁忙区域。这些区域包括所有虚拟分配 block 、SBH 堆、来自自定义分配器的内存以及不属于其他分类的地址空间的所有其他区域。

关于windbg - 解析 WinDbg 中的故障转储以获取私有(private)字节(托管堆除外)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4885429/

相关文章:

debugging - 错误: Symbol file could not be found.windbg.exe

.net - 是否有可能从转储中获取引发异常的行?

asp.net - 服务于应用程序池 'X' 的进程与 Windows Process Activation Service 发生致命通信错误

不杀进程的 Linux 核心转储

.net - Application.Exit 没有杀死消息泵?

ios8 - 查找 iOS 8 设备上的崩溃日志

c++ - 如何查看导致转储的故障发生在哪毫秒?

c++ - 使用-xipo -xO4构建时发生c++崩溃

android - 无法转换 hprof 转储

azure - 如何使用参数自动从 Azure Web 应用程序获取完整内存转储