在 Visual Studio C++ 2010 中找不到或打开 PDB 文件

Posted

技术标签:

【中文标题】在 Visual Studio C++ 2010 中找不到或打开 PDB 文件【英文标题】:Cannot find or open the PDB file in Visual Studio C++ 2010 【发布时间】:2012-10-08 22:06:35 【问题描述】:

我使用 Visual Studio 2010 C++,我的项目构建没有错误,但是当我运行它时,我得到了这个。我在 Windows XP 上。

'Shaders.exe': Loaded 'C:\Documents and Settings\User\My Documents\Visual Studio        2010\Projects\Shaders\Win32\Debug\Shaders.exe', Symbols loaded.
'Shaders.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', Cannot find or open the PDB  file
'Shaders.exe': Loaded 'C:\qt-everywhere-opensource-src-4.8.3\bin\QtCored4.dll', Symbols  loaded.
'Shaders.exe': Loaded 'C:\WINDOWS\system32\user32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\gdi32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\ole32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\advapi32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\rpcrt4.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\secur32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\msvcrt.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\ws2_32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\ws2help.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\msvcp100d.dll', Symbols loaded.
'Shaders.exe': Loaded 'C:\WINDOWS\system32\msvcr100d.dll', Symbols loaded.
'Shaders.exe': Loaded 'C:\qt-everywhere-opensource-src-4.8.3\bin\QtGuid4.dll', Symbols loaded.
'Shaders.exe': Loaded 'C:\WINDOWS\system32\comdlg32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\comctl32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\shell32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\shlwapi.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\oleaut32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\imm32.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\winmm.dll', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\WINDOWS\system32\winspool.drv', Cannot find or open the PDB file
'Shaders.exe': Loaded 'C:\qt-everywhere-opensource-src-4.8.3\bin\QtOpenGLd4.dll', Symbols loaded.

谢谢

【问题讨论】:

不确定这是否能解决您的问题,但我的问题解决了我在 Virtual C++ 2010 Express 上的Cannot find or open the PDB file 问题。转到Tools > Options > Debugging > Native 并检查Load DLL Exports 请注意,该选项的位置自 Visual Studio 2015 起已更改,现在位于 Tools > Options > Debugging > General > Load dll exports (Native only) 另见:Error Message : Cannot find or open the PDB file 【参考方案1】:

PDB 是 Visual Studio 使用的调试信息文件。这些是系统 DLL,您没有调试符号。转到 Tools->Options->Debugging->Symbols 并选择复选框“Microsoft Symbol Servers”,Visual Studio 将自动下载 PDB。或者,如果您不需要在这些模块中看到正确的调用堆栈,则可以忽略这些警告。

【讨论】:

我在尝试将 opencv 安装到 VS12 时遇到了同样的问题。它似乎加载了符号,但是当我重建时没有任何变化。你有其他想法为什么会发生这种情况吗? 它对我有用,但只是部分。它无法加载与 openCV 相关的 dll 的符号。与@Ege 相同 @Ruchir 您需要在该对话框中指定 OpenCV 符号的路径。 Microsoft 符号服务器只有 Microsoft DLL 的符号。 谢谢@Paul。我没有与 OpenCV 相关的 PDB 文件,而且似乎得到它们我必须使用 cmake ***.com/a/19436870/5022962 重新安装 OpenCV。虽然不想重新安装 OpenCV.... \Users\%Username%\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols 是存储下载的 MS 符号的典型位置。然而,在我的项目的 50 MB D/L 期间,处于“沙漏”模式的 VS10 从未被任务管理器降级为“无响应状态”。【参考方案2】:

使用 VS 2013。 尝试以下工具 -> 选项 -> 调试 -> 输出窗口 -> 模块加载消息 -> 关闭

它将禁用加载模块的显示。

【讨论】:

这是更好的解决方案,因为它删除了这些行,而不仅仅是修复 PDB 卸载文件信息。赞成。 试图做到这一点,视觉工作室环境改变了它的视觉环境:( 请注意,这不是解决方案,它只是避免了问题。 @CaryBondoc 取决于您对问题的看法...如果问题是输出中存在大量不相关的噪声很容易遗漏实际信息,那么这种方法会更好,因为其他方法只是通过将Cannot find or open the PDB file 替换为Symbols loaded 来改变噪声的质量。如果输出是彩色编码的,那就太好了。当然,这样做也有风险,当它变得重要时忘记它。这就是程序员的生活。 如何避免得到这个窗口?当我在框架方法上按 F11 时,我得到了这个烦人的窗口。我必须小心何时按 F11 或按 F10。请帮忙【参考方案3】:

Paul 的回答是对的,我只是把视觉效果放在很容易到达那里。

转到工具->选项->调试->符号

设置标记为红色的复选框,它将从 microsoft 下载 pdb 文件。当你设置复选框时,它也会在下面的编辑框中为pdb文件设置一个默认路径,你不需要改变它。

【讨论】:

截图真的很有帮助!【参考方案4】:

如果您的项目地图中有多个项目,请在所有子项目中使用相同的硬编码 PathFile PDB 名称:

使用例如

D:\Visual Studio Projects\my_app\MyFile.pdb

不要使用例如

$(IntDir)\MyFile.pdb

在所有子项目中!!!

= 编译器参数 /Fd

【讨论】:

什么是“工程图”?【参考方案5】:

如果您对工具、选项、调试、符号中配置的符号缓存目录没有修改权限,也会发生这种情况。

【讨论】:

【参考方案6】:

我遇到了类似的问题,Visual Studio (2017) 说它找不到我项目的 PDB 文件。我可以看到 PDB 文件确实存在于正确的路径中。我必须清理并重建项目,然后 Visual Studio 识别出 PDB 文件并进行调试。

【讨论】:

【参考方案7】:

你只需将.pdb的路径添加到VS的工作目录!

【讨论】:

以上是关于在 Visual Studio C++ 2010 中找不到或打开 PDB 文件的主要内容,如果未能解决你的问题,请参考以下文章

将 C++ 项目从 Visual Studio 2008 转换为 Visual Studio 2010

无法在 Visual Studio 2010 中构建 C++ 项目

在 Visual Studio 2010 (C++) 中集成 MATLAB 代码

C++ 方法的 Visual Studio 2010 工具提示注释

为啥以下无法在 Visual Studio 2010 C++ 下编译?

如何在 Visual Studio 2010 Ultimate 中创建 C++ 项目