我们正处于使用MiniDumpWriteDump生成转储文件的情况。但是我们注意到,如果代码采用路径我们的代码 - > MFC->我们的代码,callstack在MFC结束,我们就失去了问题的根源。
这是一款64位应用程序。
由于原始评论而更新:前几天的例子如下。我们收到了客户的转储文件。加载到VS2017。由于dumpfile和我们的开发机器之间不匹配而且MS的符号存储上没有二进制文件,因此堆栈跟踪停止在MFC(我们的理解)。我们最终在我们网络上的另一台机器上找到了MFC Dll的匹配版本,然后完全完成了callstack,我们可以看到它从我们的代码返回 - > MFC - >回到我们的代码并找到问题。
有没有办法获得完整的callstack,即使我们没有获得MFC DLL的符号/二进制文件?
答案 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边界上获得正确的堆栈跟踪。