在调试时,我正在尝试进入MFC源代码。但是,Visual显然在加载适当的符号时遇到了问题:
C:\WINDOWS\符号\dll\mfc100.i386.pdb: PDB与图像不匹配。
因此,我检查了其他问题,通常建议启用“符号服务器”。但是,这并没有帮助,因为它似乎只下载了一个最小的PDB文件(~2MB),而不是一个实际允许您进入源代码(~20 MB)的PDB文件。
根据无法加载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 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发布于 2014-04-11 12:26:33
正如MSDN员额 (由Crescens2k解释)中所解释的-
这些符号应该与VS使用的版本相匹配,因此如果您安装了比VS当前使用的版本更新的VC redist版本,它们就会失去同步。检查安装VS2010的VC目录中CRT的版本。应该有一个redist目录在那里,下面是CRT。检查这些文件的版本,看看它们是否与system32目录中的版本相同。通常情况下应该是匹配的。如果他们不检查VS的更新。最新版本应该是10.0.40219.325,因此请确保VS已经更新以使用该版本。
后来-
...try手动应用MFC安全更新。..。看看这能不能解决所有问题。
幸运的是,使用WinDbg工具,您可以将问题定位到不匹配的符号上,经验丰富的程序员(Crescens2k)的建议帮助解决了"DLL地狱“版本不匹配这一令人痛苦的丑陋问题。
https://stackoverflow.com/questions/23008222
复制相似问题