C++ Windows:打开小型转储时无法看到调用堆栈

C++ Windows:打开小型转储时无法看到调用堆栈,c++,windows,debugging,crash-dumps,minidump,C++,Windows,Debugging,Crash Dumps,Minidump,我正在使用MiniDumpWriteDump和MiniDumpNormal参数来转储SEH异常处理程序中的调用堆栈。当我在VS中打开转储时,我看不到调用堆栈。两天前,当我开始尝试倾销时,我确实看到了同样的代码。我改变了一些东西,我不明白是什么。这是一个调试构建(我甚至看到了发布构建中的调用堆栈)。如果我将断点放在MiniDumpWriteDumpcall,我可以在调试器中看到调用堆栈良好。如果转储不是从异常处理程序中写入的,我可以在VS中打开转储后看到调用堆栈。 stack没有出现的原因是什么

我正在使用
MiniDumpWriteDump
MiniDumpNormal
参数来转储SEH异常处理程序中的调用堆栈。当我在VS中打开转储时,我看不到调用堆栈。两天前,当我开始尝试倾销时,我确实看到了同样的代码。我改变了一些东西,我不明白是什么。这是一个调试构建(我甚至看到了发布构建中的调用堆栈)。如果我将断点放在
MiniDumpWriteDump
call,我可以在调试器中看到调用堆栈良好。如果转储不是从异常处理程序中写入的,我可以在VS中打开转储后看到调用堆栈。 stack没有出现的原因是什么

我用/EHa编译p.S.I。也尝试禁用C++异常(这两天前肯定是有效的)。当然,.pdb文件可以很好地生成

这就是我所说的“调用堆栈没有出现”的意思


在某些情况下,调试器无法重建整个堆栈。
在这种情况下,您需要使用WinDbg打开转储并手动重建堆栈。

visual studio生成目录中的.pdb文件是否与生成小型转储的.exe的生成相匹配?@obmarg:当然!我只需在代码中生成异常并立即打开转储,就在这里,在我的开发机器上。请注意,如果我在代码中的某个位置而不是在异常处理程序中调用
minidumpWriteUp
,那么调用堆栈将正常显示!“你改变了什么。”什么?系统配置?节目?您是否在VCS中存档了以前的版本?你能找到一个有效的版本吗?@zvrba:我只玩过项目设置,而那些没有版本控制。代码有很多更改,但请尝试对
中的代码进行所有更改__除了
。最后一个答案是否定的,否则我不会在这里问。你可以尝试用WinDbg打开你的转储文件。这是一个更健壮的转储工具。至少它可以给你一些额外的信息。还有一些工具可以自动提取调用堆栈(和崩溃诊断),而无需借助WinDbg。我在这封信里写了一封信。微软的DebugDiag工具是一个不错的选择。