我想使用 ProcDump 的能力MINIDUMP_TYPE
通过-mc
命令行开关创建自定义的 minidump 以包含超出MiniDumpNormal
.
不幸的是MiniDumpWithFullMemory
, MiniDumpWithIndirectlyReferencedMemory
,MiniDumpWithPrivateReadWriteMemory | MiniDumpWithPrivateWriteCopyMemory
似乎也没有任何效果:创建了一个非空的小型转储,没有显示错误,但比预期的要小很多,并且通过 WinDbg 的.dumpdebug
功能查询小型转储不会列出任何上述标志,即使明确包含在小型转储中类型。似乎上面提到的任何标志都不会影响 ProcDump 的行为。
有问题的进程是在 64 位 Windows 10,build 2004 下运行的 32 位进程。我尝试了 procdump.exe 和 procdump64.exe 9.0 版,尽管没有-64
命令行开关,因为我不想包含 SysWOW64高架。我还尝试将最新的 Windows SDK 调试工具提供的 32 位和 64 位版本的 dbghelp.dll 复制到 procdump.exe 和 procdump64.exe 所在的相应文件夹中。最后,我确保将 minidump 类型作为十六进制数字传递,并且我尝试过的任何其他标志似乎都可以毫无问题地被识别,并且在之后检查 WinDbg 中的 minidump 时被列出。
例如,调用procdump.exe -mc 51B25 <process>
应该创建一个转储
0x51B25 = 334629 = (MiniDumpWithDataSegs
| MiniDumpWithProcessThreadData
| MiniDumpWithHandleData
| MiniDumpWithPrivateReadWriteMemory
| MiniDumpWithUnloadedModules
| MiniDumpWithFullMemoryInfo
| MiniDumpWithThreadInfo
| MiniDumpWithTokenInformation
| MiniDumpWithPrivateWriteCopyMemory)
在 WinDbg 中检查转储时,既不MiniDumpWithPrivateReadWriteMemory
也不MiniDumpWithPrivateWriteCopyMemory
显示在.dumpdebug
相应内存区域不可用的信息中。MiniDumpWriteDump
请注意,当我出于演示目的从应用程序中创建转储时,使用时确实会显示标志.dumpdebug
,并且生成的小型转储将明显更大(在其他可比较的条件下)。
有人可以确认 ProcDump 确实忽略了与内存相关的标志或向我解释我做错了什么吗?
(使用开关编写 MiniPlus 转储-mp
确实有效,但不一定包括感兴趣的内存区域。)