【发布时间】:2014-04-11 09:08:48
【问题描述】:
我试图在调试时进入 MFC 源代码。但是,Visual Studio 在加载适当的符号时显然存在问题:
C:\WINDOWS\symbols\dll\mfc100.i386.pdb:PDB 与图像不匹配。
我检查了关于 SO 的其他问题,通常建议启用“符号服务器”。但这并没有帮助,因为它似乎只下载了一个最小的 PDB 文件(~2 MB),而不是一个实际使您能够进入源代码的 PDB 文件(~20 MB)。
根据Cannot load symbols for mfc100.dll,我应该从http://msdn.microsoft.com/en-us/windows/hardware/gg463028 下载完整的符号包。我这样做了,但这也无济于事,因为这个包实际上根本不包含 mfc100.dll 的符号。
接下来我尝试从另一个系统复制 PDB 文件。在我的本地 Win7 操作系统上,我有一个 2011 年 6 月 10 日(24.708 KB)的 mfc100.i386.pdb。在我调试的系统上,我有 mfc100.i386.pdb 来自 2010-03-18 (23.732 KB)。两者都“不匹配图像”。
那么我应该从哪里获得正确且完整的符号文件呢?
操作系统: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
【问题讨论】:
-
pdbs 允许显示准确的调用堆栈而不是源代码,因为您需要源代码,除非您在 MS 开发团队工作,否则您不会看到该源代码
-
@EdChum 我说的是 C:\Program Files\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc 中的源代码。所以我确实有我需要的东西(不是 MS 开发人员)。
-
好吧,我的错我误解了这个问题。因此,即使您将符号服务器设置为 `msdl.microsoft.com/download/symbols` 或下载 ms 符号,它仍然会失败吗?附加 WinDbg 时会发生什么,这是否仍然无法匹配 pdb 签名?
-
执行:>!sym 嘈杂>.reload 您将获得有关符号加载失败原因的更多信息。(调试器显示有关其搜索符号的信息)
-
我能想到的唯一选项-“检查安装VS2010的VC目录中的CRT版本。那里应该有一个redist目录,下面是CRT。检查版本这些文件并查看它们是否与您的 system32 目录中的版本相同。(social.msdn.microsoft.com/forums/vstudio/en-US/…)
标签: c++ visual-studio mfc debug-symbols