为什么 VisualStudio2010无法找到/打开 PDB 文件?

我试图在 VS 2010中使用 OpenCV。我是一个业余爱好者,我正在学习 OpenCV 维基的第一步。但是,当尝试调试我的项目时,我会得到以下错误:

“ C: Windows SysWOW64 ntdll.dll”,无法找到或打开 PDB 文件 “ C: Windows SysWOW64 kernel32.dll”,无法找到或打开 PDB 文件 “ C: Windows SysWOW64 kernellbase.dll”,无法找到或打开 PDB 文件

我把那些文件放在正确的目录下了,为什么打不开呢?我应该做什么来解决这个问题?

189858 次浏览

我很确定这些是 警告,而不是错误。您的项目应该仍然运行得很好。

但是,由于您应该总是尝试修复编译器警告,让我们看看我们能发现什么。我对 OpenCV 一点也不熟悉,而且你也没有链接到你正在学习的维基教程。但在我看来,问题在于你运行的是64位版本的 Windows (DLL 文件路径中的“ SysWOW64”文件夹证明了这一点) ,但是你正在尝试的 OpenCV 是为32位平台构建的。因此,您可能需要使用 CMake 重新构建项目,正如 给你所解释的那样。

更具体地说,列出的文件是 Windows 系统文件。PDB 文件包含 VisualStudio 用于单步执行和调试已编译代码的调试信息。您实际上并不需要系统库的 PDB 文件来调试自己的代码。但是如果需要,也可以为系统库使用 下载符号。进入“调试”菜单,点击“选项和设置”,然后向下滚动右侧的列表框,直到看到“启用源服务器支持”。确保选中了该选项。 然后,在左侧的树视图中,单击“符号”,并确保选择了“ Microsoft 符号服务器”选项。单击“确定”关闭对话框,然后尝试重新生成。

首先改变以下参数:

工具-> 选项-> 调试-> 符号-> 服务器-> 是

然后按 Ctrl + F5,你会看到令人惊奇的东西。

我发现这些错误有时是由于编译项目时缺乏权限造成的——所以我以管理员身份运行以使其正常工作。

我也收到了同样的警告。我不确定是32位还是64位的问题。刚刚加载的新符号和一些问题得到了解决,但与 OpenCV 有关的问题仍然存在。以下是已解决和未解决问题的输出摘录:

‘ OpenCV _ helloworld.exe’: 已加载 ‘ C: OpenCV2.2 bin opencv _ imgproc220d.dll’,无法找到或打开 PDB 文件

‘ OpenCV _ helloworld.exe’: 加载‘ C: WINDOWS system32 imm32.dll’, 加载的符号(源信息被删除)。

代码退出0,以防有人问起。

程序“[4424] OpenCV _ helloworld. exe: Natural”已经退出 代码0(0x0)。

当您的可执行文件在后台运行时,提到第一个线程/另一个可能性 VS 无法打开或找到 pdb 文件的进程。 我和 mpiexec 合作的时候碰到了这个问题。始终检查您的任务管理器,并终止您将在项目中构建的任何执行进程。一旦我这样做,它调试或构建良好。

另外,如果尝试继续执行警告,则不会命中断点,断点也不会具有当前可执行文件

我也有同样的问题。调试不适用于 OpenCV 可执行文件附带的内容。你必须建立自己的二进制文件。
然后在 Debug-> 选项和设置-> Debug-> 符号中启用 Microsoft 符号服务器

我也有同样的问题。事实证明,在编译从别人那里获得的项目时,我没有设置正确的 StartUp 项目(在解决方案资源管理器中右键单击所需的启动项目,然后选择“ set as StartUp Project”)。也许这个会有帮助,干杯。

我也遇到了同样的问题。当我在 C + + 代码上运行我的单元测试时,我得到一个错误说“无法找到或打开 PDB 文件”。

日志

当我在 VisualStudio 中查看 Output 日志时,我发现它查找的文件夹是错误的。我已经重命名了 WinUnit 文件夹,但是在 WinUnit 代码中有些东西正在使用旧的文件夹名来查找 PDB 文件。我猜他们是硬编码的。

找到问题了

当我第一次下载并解压 WinUnit 文件时,主文件夹名为“ WinUnit-1.2.0909.1”。解压该文件后,我将文件夹重命名为“ WinUnit”,因为在 VisualStudio 项目设置期间输入该文件更容易。但显然,这破坏了找到 PDB 文件的能力,即使我根据 WinUnit 文档设置了所有东西。

我的药

我把文件夹名改回原来的了,还能用。

真奇怪。

对于像我一样在这里找到自己的 VS2013用户:

Tools -> Options -> Debugging -> Symbols

您将看到 Cache symbols in this directory:字段为空; 您可以自己浏览/输入路径,也可以直接单击 Load all symbols按钮。将会出现一个警告窗口,显示“因为您没有选择符号缓存目录,所以将使用默认值”。现在,您将在前面的空 path-field 中看到 C:\Users\XXXX\AppData\Local\Temp\SymbolCache。第二次单击 Load all symbols时,您应该被设置。点击确定,只是为了勤奋,清洁和重建您的解决方案。

VisualStudio 社区版2015

一整天都在犯这个错误。最后我通过工具 > 导入和导出设置 > 重置所有选项 > 重置常规设置来修复它。

一旦它的重置到工具 > 选项 > 调试 > 符号 >-然后勾选框旁边的微软符号服务器。

在调试模式下运行你的应用程序,它会打开窗口说它正在下载一些不同的符号。Dll 文件。让它结束这一切。

一旦完成,它应该会再次工作。

这里也有同样的问题,但是另一个解决方案奏效了。

首先,我尝试了以下方法,但没有一个奏效:

  1. 按照 Seanlitow 的建议加载符号

  2. 删除/添加对 PresentationFramework 和 PresentationCore 的引用

  3. 重启系统

The solution was to 撤销 the last few changes I had made to my code. I had just added a couple radio buttons and event handlers for checked and unchecked events. After removing my recent changes everything compiled. I then added my 一模一样 changes back and everything compiled properly. I don't understand why this worked - only thing I can think of is a problem with my VS Solution. Anyway, if none of the other suggestions work, you might try reverting back your most recent changes. NOTE: if you close & re-open Visual Studio your undo history is lost.. so you might try this before you close VS.