アプリでミニ ダンプを作成して、未処理の例外をデバッグできるようにしたいと考えています。
必要なミニ ダンプの種類は、ダンプが作成されるまでわからない場合があります。可能な限り完全なダンプを作成するには、 MINIDUMP_TYPEフラグのどの組み合わせを使用すればよいでしょうか?
アプリでミニ ダンプを作成して、未処理の例外をデバッグできるようにしたいと考えています。
必要なミニ ダンプの種類は、ダンプが作成されるまでわからない場合があります。可能な限り完全なダンプを作成するには、 MINIDUMP_TYPEフラグのどの組み合わせを使用すればよいでしょうか?
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.
DebugInfo.com で「Effective minidumps」を読んでみると、解決策が得られるようです。