0

这是我的注册表:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpType"=dword:00000000
"CustomDumpFlags"=dword:00000006

根据这篇文章 DumpType=0意味着自定义转储,然后CustomDumpFlags被考虑在内。根据这篇文章 CustomDumpFlags=6的意思MiniDumpWithFullMemory | MiniDumpWithHandleData,其中:

  • MiniDumpWithFullMemory - 在进程中包含所有可访问的内存。原始内存数据包含在末尾,因此可以直接映射初始结构而无需原始内存信息。此选项可能会导致文件非常大。
  • MiniDumpWithHandleData - 包括有关在进行小型转储时处于活动状态的操作系统句柄的高级信息。

现在我有一个 crash-me 应用程序,所以我运行它,它崩溃了,转储是在 %userprofile%\AppData\Local\CrashDumps 中创建的,我在 windbg 中打开它并在那里看到以下行:

具有完整内存的用户迷你转储文件:只有应用程序数据可用

这相当于CustomDataFlags=2

那么,我该如何创建一个包含句柄数据的转储呢?如果可能的话,我不想使用第三方。

我的操作系统是 Windows 8 或 Windows 2008R2 服务器或更高版本。

4

1 回答 1

1

Try .dumpdebug,这是一个未记录的命令。在输出的顶部应该有标志:

0:006> .dumpdebug
----- User Mini Dump Analysis

MINIDUMP_HEADER: Version         A793 (62F0) NumberOfStreams 15 Flags  41826
                0002 MiniDumpWithFullMemory
                0004 MiniDumpWithHandleData
                0020 MiniDumpWithUnloadedModules
                0800 MiniDumpWithFullMemoryInfo
                1000 MiniDumpWithThreadInfo
                40000 MiniDumpWithTokenInformation

如果你不喜欢冗长的输出,你可以在 shell 上使用find命令过滤它:

.shell -ci ".dumpdebug" find "MiniDumpWith"
于 2013-12-29T23:24:20.413 回答