【问题标题】:mfc140.dll version 14.0.24212.0 not downloaded from microsoft symbols server未从 Microsoft 符号服务器下载 mfc140.dll 版本 14.0.24212.0
【发布时间】:2018-07-04 08:22:12
【问题描述】:

我正在使用 Windbg 调试在主线程调用堆栈上具有 mfc140.dll 版本 14.0.24212.0 的转储。由于某种原因无法下载此版本的mfc140。

这是带有 sym 噪声的日志:

SYMSRV:  BYINDEX: 0xC
         c:\websymbols*http://msdl.microsoft.com/download/symbols
         mfc140.dll
         578697145cc000
SYMSRV:  c:\websymbols\mfc140.dll\578697145cc000\mfc140.dll - file not found
SYMSRV:  HTTPGET: /download/symbols/index2.txt
SYMSRV:  HttpQueryInfo: 400 - HTTP_STATUS_BAD_REQUEST
SYMSRV:  HTTPGET: /download/symbols/mfc140.dll/578697145cc000/mfc140.dll
SYMSRV:  HttpQueryInfo: 404 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/mfc140.dll/578697145cc000/mfc140.dl_
SYMSRV:  HttpQueryInfo: 404 - HTTP_STATUS_NOT_FOUND
SYMSRV:  HTTPGET: /download/symbols/mfc140.dll/578697145cc000/file.ptr
SYMSRV:  HttpQueryInfo: 404 - HTTP_STATUS_NOT_FOUND
SYMSRV:  c:\websymbols\mfc140.dll\578697145cc000\mfc140.dll not found
SYMSRV:  http://msdl.microsoft.com/download/symbols/mfc140.dll/578697145cc000/mfc140.dll not found

DBGENG:  C:\Windows\System32\mfc140.dll image header does not match memory image header.
DBGENG:  C:\Windows\System32\mfc140.dll - Couldn't map image from disk.
DBGENG:  mfc140.dll - Partial symbol image load missing image info
DBGHELP: Module is not fully loaded into memory.
DBGHELP: Searching for symbols using debugger-provided data.
SYMSRV:  BYINDEX: 0x11
         c:\websymbols*http://msdl.microsoft.com/download/symbols
         mfc140.amd64.pdb
         A2209CF5D6D44F309A30F1D37A54A0F517
SYMSRV:  PATH: c:\websymbols\mfc140.amd64.pdb\A2209CF5D6D44F309A30F1D37A54A0F517\mfc140.amd64.pdb
*** WARNING: Unable to verify timestamp for mfc140.dll
DBGHELP: mfc140 - private symbols & lines 
        c:\websymbols\mfc140.amd64.pdb\A2209CF5D6D44F309A30F1D37A54A0F517\mfc140.amd64.pdb

【问题讨论】:

  • 根据错误,需要下载mfc140.dll吗?其中包含 vc++ 2015 可再发行组件:microsoft.com/en-us/download/details.aspx?id=53840 如果它不在您的机器中,您可以尝试安装它。
  • "C:\Windows\System32\mfc140.dll 图像标头与内存图像标头不匹配。" - 听起来其中一张图像被篡改了,无论是在您的机器或您从中获取转储的机器。
  • @IInspectable system32文件夹中mfc140.dll的版本是14.0.24215.0,dump需要14.0.24212.0。
  • @FletchZhou-MSFT 为什么不从微软符号服务器下载?
  • 调试器确实从符号服务器加载符号。它无法在您的系统中找到匹配的二进制文件来重建转储进程的内存。符号服务器不提供二进制文件。您必须自己提供它们。

标签: visual-c++ visual-studio-2015 mfc windbg symbol-server


【解决方案1】:

如果一个旧文件不在公共 pdb 服务器中,没有人能真正说出发生了什么。这可能是构建系统配置的错误。或者这些时代的政策。或者它已经以某种方式被删除了。

对于这种情况,我只建议将可再发行组件更新为 the latest version。 MFC140.dll 对 VS2015、VS2017 和 VS2019 具有相同的接口。

【讨论】:

  • 好吧,“它刚刚消失”是一种解释。不过,这不是解决方案。我需要分析来自用户的故障转储。当然,如果我可以在我的环境中重新创建问题,我不需要特定版本。
  • 无论如何,你的回答帮助了我。现在知道“MFC140.dll 与 VS2015、VS2017 和 VS2019 具有相同的接口”,我能够弄清楚我需要卸载 VS2017 运行时才能安装版本 14.0.24212.0 的 vc_redist.x64.exe。安装 vc_redist.x64.exe 是获得正确 MFC140.dll 的最简单方法,结果发现符号服务器中只缺少 DLL,而不是 .pdb
  • 安装运行时版本为 14.0.24212.0 后,我无法处理版本为 14.0.24215.1 的另一个故障转储。看起来 Microsoft 符号服务器无法提供 any MFC DLL。在这里找到了正确的 azdll.net/files/mfc140-dll.html 和 .pdb 是可用的
【解决方案2】:

我正在总结 cmets,已经给出答案,以及我的观察。

Microsoft 符号服务器无法提供 MFC/CRT 的某些 DLL。

还有 .pdb 文件。

通过以下方式获取 DLL:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    相关资源
    最近更新 更多