0

我们处于使用 MiniDumpWriteDump 生成转储文件的情况。但是我们注意到,如果代码采用我们的代码->MFC->我们的代码的路径,则调用堆栈在 MFC 处结束,我们就失去了问题的根源。

这是一个 64 位应用程序。

由于原始评论而更新:前几天的一个例子如下。我们收到了客户的转储文件。将其加载到 VS2017 中。由于转储文件和我们的开发机器之间的不匹配以及 MS 的符号存储中没有二进制文件,堆栈跟踪在 MFC 停止(我们的理解)。我们最终在我们网络上的另一台机器上找到了 MFC Dll 的匹配版本,然后调用堆栈完全完成,我们可以看到它从我们的代码 -> MFC -> 回到我们的代码并找到问题。

有没有办法获得完整的调用堆栈,即使我们没有获得 MFC DLL 的符号/二进制文件?

4

1 回答 1

0

MFC 符号文件始终位于当前 Visual Studio 的文件夹中。因此,您应该复制它们或将它们存储在您自己的符号存储中。

在我的 VS 2017(版本 15.6.3)中,我的文件夹中有文件

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\atlmfc\lib\x64
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.13.26128\atlmfc\lib\x86

使用正确的 PDB 文件还可以帮助您跨 MFC 边界获得正确的堆栈跟踪。

于 2018-03-28T08:13:36.547 回答