Какая комбинация значений перечисления MINIDUMP_TYPE даст мне наиболее «полный» мини-дамп? - PullRequest
9 голосов
/ 18 февраля 2011

Я хочу, чтобы мое приложение создавало мини-дамп, чтобы помочь отлаживать незапланированные исключения.

Возможно, я не знаю, какой тип мини-дамп мне понадобится до тех пор, пока не будет создан дамп, поэтому какие комбинации MINIDUMP_TYPE флаги, которые я должен использовать, чтобы дать мне самый полный возможный дамп?

Ответы [ 2 ]

10 голосов
/ 18 февраля 2011

Я составил следующий список с помощью ссылки DebugInfo.com (спасибо Дэвиду) и страницы 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.
4 голосов
/ 18 февраля 2011

Прочитайте Эффективные мини-дампы на DebugInfo.com похоже, что это приведет вас к решению.

...