我一直在使用MiniDumpWriteDump在崩溃时生成转储文件。我一直在努力做一个完整的内存转储。这似乎有效,并按预期生成一个大文件。
然而,当我将这个巨大的文件加载到Visual Studio(2005)中时,我似乎无法在堆上看到任何变量的值。事实上,它不会给我提供比普通转储更多的信息......
我对MiniDumpWriteDump的调用如下:
MINIDUMP_EXCEPTION_INFORMATION mdi;
mdi.ThreadId = GetCurrentThreadId();
mdi.ExceptionPointers = in_pInfo;
mdi.ClientPointers = FALSE;
MiniDumpWriteDump(GetCurrentProcess(),GetCurrentProcessId(),
fHan,
MiniDumpWithFullMemory,
&mdi,
0,
0);
注意:我有一整套pdb,一个有效的堆栈,在我的测试应用程序中,我假装误差为零。
知道为什么会这样吗?
干杯 富
答案 0 :(得分:2)
可能是因为您没有正确的.pdb文件。或者因为您的代码已通过优化程序的RSA加密版本。或者因为你已经有了x64构建,其中指针在寄存器中传递。或者因为您的代码因堆损坏而崩溃,使调试信息同样不可靠。或者崩溃的线程堆栈被烧毁,没有面包屑跟踪。
选择。