首页 文章

调试MFC:“mfc100.dll”无法找到或打开pdb

提问于
浏览
3

我正在尝试在调试时进入MFC源代码 . 但是,Visual Studio显然在加载适当的符号时遇到问题:

C:\ WINDOWS \ symbols \ dll \ mfc100.i386.pdb:PDB与图像不匹配 .

我在SO上检查了其他问题,通常建议启用“符号服务器” . 这没有帮助,因为它似乎只下载一个最小的PDB文件(~2 MB)而不是实际上允许您进入源(~20 MB)的PDB文件 .

根据Cannot load symbols for mfc100.dll我应该从http://msdn.microsoft.com/en-us/windows/hardware/gg463028下载一个完整的符号包 . 我做到了,但它也没有帮助,因为这个包实际上根本不包含mfc100.dll的符号 .

我尝试的下一件事是从另一个系统复制PDB文件 . 在我当地的Win7操作系统上,我有一个2011-06-10(24.708 KB)的mfc100.i386.pdb . 在我调试的系统上,我有来自2010-03-18(23.732 KB)的mfc100.i386.pdb . 两者都做“不匹配的形象” .

那么我应该从哪里获得正确的完整符号文件?

操作系统:Windows 8 x86 . Visual Studio 2013与VS 2010 C项目 . mfc100.dll版本: 10.00.40219.01

WinDbg !sym noisy 输出:

************* Symbol Path validation summary **************
Response                         Time (ms)     Location
OK                                             C:\Windows\symbols\dll
DBGHELP: Symbol Search Path: c:\windows\symbols\dll
DBGHELP: Symbol Search Path: c:\windows\symbols\dll
0:000> .reload
Reloading current modules

DBGHELP: c:\windows\symbols\dll\mfc100.i386.pdb - mismatched pdb
DBGHELP: c:\windows\symbols\dll\dll\mfc100.i386.pdb - file not found
DBGHELP: c:\windows\symbols\dll\symbols\dll\mfc100.i386.pdb - file not found
DBGHELP: C:\WINDOWS\SYSTEM32\mfc100.i386.pdb - file not found
DBGHELP: mfc100.i386.pdb - file not found
DBGHELP: Couldn't load mismatched pdb for C:\WINDOWS\SYSTEM32\mfc100.dll
*** ERROR: Module load completed but symbols could not be loaded for C:\WINDOWS\SYSTEM32\mfc100.dll
DBGHELP: mfc100 - no symbols loaded

************* Symbol Loading Error Summary **************
Module name            Error
mfc100                 PDB not found : c:\windows\symbols\dll\symbols\dll\mfc100.i386.pdb
                Unable to locate the .pdb file in this location

1 回答

  • 2

    MSDN post所述(由Crescens2k提供) -

    这些符号应与VS使用的版本匹配,因此如果安装的VC版本比VS当前使用的版本更新,则它们可能会失去同步 . 检查安装了VS2010的VC目录中的CRT版本 . 那里应该有一个redist目录,其下是CRT . 检查这些文件的版本,看看它们是否与system32目录中的文件版本相同 . 这些通常应该匹配 . 如果他们没有,那么检查VS的更新 . 最新版本应为10.0.40219.325,因此请确保已更新VS以使用它 .

    然后 -

    ...尝试手动应用MFC安全更新 . ......并且看看是否能解决所有问题 .

    令人高兴的是,使用WinDbg工具,您可以将问题定位到不匹配的符号,经验丰富的程序员(Crescens2k)的建议有助于解决版本与“DLL地狱”不匹配的痛苦难题 .

相关问题