在MFC边界上获取MiniDumpWriteDump堆栈跟踪的正确方法是什么?

时间:2018-03-27 23:44:04

标签: mfc callstack crash-dumps minidumpwritedump

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

这是一款64位应用程序。

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

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

1 个答案:

答案 0 :(得分: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边界上获得正确的堆栈跟踪。

相关问题