MINIDUMP_TYPE枚举值的哪些组合将为我提供最“完整”的迷你转储?

时间:2011-02-18 12:09:12

标签: windows winapi debugging minidump

我希望我的应用创建一个小型转储,以帮助调试无法处理的异常。

我可能不知道在创建转储之前我想要什么类型的迷你转储,那么我应该使用哪些MINIDUMP_TYPE标志组合来为我提供最完整的转储?

2 个答案:

答案 0 :(得分:10)

我在DebugInfo.com链接(感谢David)和MSDN页面的帮助下提出了以下列表。并非所有标志都包含在DebugInfo.com链接中。

使用这些标志应该可以创建一个全面但很大的小型转储。

包括:

MiniDumpWithFullMemory                  -       the contents of every readable page in the process address space is included in the dump.      
MiniDumpWithHandleData                  -       includes info about all handles in the process handle table. 
MiniDumpWithThreadInfo                  -       includes thread times, start address and affinity. 
MiniDumpWithProcessThreadData           -       includes contents of process and thread environment blocks. 
MiniDumpWithFullMemoryInfo              -       includes info on virtual memory layout. 
MiniDumpWithUnloadedModules             -       includes info from recently unloaded modules if supported by OS. 
MiniDumpWithFullAuxiliaryState           -       requests that aux data providers include their state in the dump. 
MiniDumpIgnoreInaccessibleMemory        -       ignore memory read failures. 
MiniDumpWithTokenInformation            -       includes security token related data.

排除:

MiniDumpNormal                          -       value is 0 so always implicitly present, unless excluded by a callback (which I won't be doing).
MiniDumpWithPrivateReadWriteMemory      -       excludes contents of shared memory. 
MiniDumpWithIndirectlyReferencedMemory  -       includes memory pages referenced by pointers on the stack, but assuming MiniDumpWithFullMemory already includes all pages in the process address space anyway.
MiniDumpWithDataSegs                    -       contents of writable data sections are already included by specifying MiniDumpWithFullMemory
MiniDumpWithCodeSegs                    -       assuming MiniDumpWithFullMemory includes this. 
MiniDumpWihtoutOptionalData             -       suppresses all memory operations other that MiniDumpNormal. 
MiniDumpFilterMemory                    -       filters out contents of stack memory (also has no effect if MiniDumpWithFullMemory used).
MiniDumpFilterModulePaths               -       removes module paths from the dump. 
MiniDumpScanMemory                      -       used to exclude memory for specific modules via callbacks. 
MiniDumpWithPrivateWriteCopyMemory      -       assume MiniDumpWithFullMemory already includes this.

答案 1 :(得分:4)

阅读Effective minidumps at DebugInfo.com看起来会引导您找到解决方案。