我正在使用 Windows 错误报告的注册表设置 来捕获 Win32 C++ 程序崩溃时的小型转储。
我想包含我的进程中的字符串数据,至少是堆栈跟踪范围内的字符串数据。但是,使用
DumpType
1: Mini dump
时,将排除所有字符串数据。
MINIDUMP_TYPE
MiniDumpWithIndirectlyReferencedMemory
,转储即可捕获所需的字符串数据。然而,该文件比标准迷你转储小得多(~400 KB vs. 15 MB),所以我担心我遗漏了重要信息。
注册表的 MINIDUMP_TYPE
DumpType
选项中使用了哪种 1: Mini dump
标志组合? 我在任何地方都找不到此信息。
如果不包含这些标志,我丢失关键信息的可能性有多大?我只在调试崩溃时查看堆栈跟踪和范围内变量。老实说,我不确定如何使用转储来确定进程崩溃的原因。
也许收集用户模式转储列出了默认标志:
0x00000121 (MiniDumpWithDataSegs MiniDumpWithUnloadedModules MiniDumpWithProcessThreadData == 0x00000001 0x00000020 0x00000100)
我创建了小型转储,并将
DumpType
设置为 1(小型转储)。
WinDbg 中的 .dumpdebug
命令列出了此小型转储的以下标志:
Flags 00200121
00000001 MiniDumpWithDataSegs
00000020 MiniDumpWithUnloadedModules
00000100 MiniDumpWithProcessThreadData
00200000 MiniDumpWithAvxXStateContext
我认为
MiniDumpWithAvxXStateContext
取决于处理器架构。