我们正处于使用MiniDumpWriteDump生成转储文件的情况。然而,我们已经注意到,如果代码采用的路径是我们的code -> MFC ->我们的代码,那么callstack就会在MFC结束,我们就失去了问题的根源。
这是一个64位的应用程序。
由于原始评论而更新:前几天的一个例子如下。我们收到了来自客户的转储文件。已将其加载到VS2017。堆栈跟踪在MFC处停止(我们的理解),因为dumpfile和我们的开发机器之间不匹配,并且在MS的符号存储上没有二进制文件。我们最终在网络上的另一台机器上找到了匹配版本的MFC,然后调用栈完全完成了,我们可以看到它从我们的代码-> MFC ->返回到我们的代码并定位问题所在。
有没有办法获得完整的调用堆栈,即使我们没有获得MFC DLL的符号/二进制文件?
发布于 2018-03-28 16:13:37
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边界的堆栈跟踪。
https://stackoverflow.com/questions/49524015
复制相似问题