我试图在调试时进入 MFC 源代码。但是,Visual Studio 显然在加载适当的符号方面存在问题:



我检查了关于 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。带有 VS 2010 C++ 项目的 Visual Studio 2013。 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

最佳答案

正如在这个 MSDN post(由 Crescens2k)中解释的那样 -



然后 -



令人高兴的是,使用 WinDbg 工具,您可以将问题定位到不匹配的符号,并且来自经验丰富的程序员 (Crescens2k) 的建议帮助解决了“DLL hell ”中令人痛苦的版本不匹配问题。

关于c++ - 调试 MFC : "mfc100.dll" cannot find or open pdb,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23008222/

10-13 06:29