Visual studio 为什么Visual Studio 2010无法查找/打开PDB文件?

Visual studio 为什么Visual Studio 2010无法查找/打开PDB文件?,visual-studio,visual-studio-2010,visual-c++,opencv,Visual Studio,Visual Studio 2010,Visual C++,Opencv,我正在尝试在VS2010中使用OpenCV。我是一个业余爱好者,我正在从OpenCV维基学习第一步。但是,在尝试调试项目时,出现以下错误: “C:\Windows\SysWOW64\ntdll.dll”无法找到或打开PDB文件 “C:\Windows\SysWOW64\kernel32.dll”无法找到或打开PDB文件 “C:\Windows\SysWOW64\kernellbase.dll”无法找到或打开PDB文件 我把这些文件放在正确的目录下,为什么它不能打开它们呢?我应该怎么做才能解决这个

我正在尝试在VS2010中使用OpenCV。我是一个业余爱好者,我正在从OpenCV维基学习第一步。但是,在尝试调试项目时,出现以下错误:

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

我把这些文件放在正确的目录下,为什么它不能打开它们呢?我应该怎么做才能解决这个问题?

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

然而,由于您应该始终尝试修复编译器警告,让我们看看我们可以发现什么。我对OpenCV一点也不熟悉,而且你也没有链接到你正在学习的wiki教程。但在我看来,问题在于您运行的是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\u imgproc220d.dll”无法找到或打开PDB 文件

“OpenCV_helloworld.exe”:加载了“C:\WINDOWS\system32\imm32.dll”, 已加载符号(源信息已剥离)

代码正在退出0,以防有人询问

程序“[4424]OpenCV_helloworld.exe:Native”已退出,但没有成功 代码0(0x0)


当您的可执行文件在后台运行时,引用第一个线程/另一种可能性VS cant open或find pdb file of the process。 我在与mpiexec合作时遇到了这个问题。始终检查您的任务管理器,并终止您将在项目中构建的任何exec进程。一旦我这样做了,它就可以调试或构建得很好


另外,如果您尝试继续警告,则不会命中断点,也不会有当前可执行文件。我遇到了相同的问题。调试无法使用OpenCV可执行文件附带的内容。您必须构建自己的二进制文件。

然后在Debug->options and settings->Debug->symbols中启用Microsoft Symbol服务器,我遇到了同样的问题。结果是,在编译从其他人那里获得的项目时,我没有设置正确的启动项目(在解决方案资源管理器中右键单击所需的启动项目,然后选择“设置为启动项目”)。也许这会有帮助,干杯。

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

当我在VisualStudio中查看输出日志时,我发现它在错误的文件夹中。我已重命名WinUnit文件夹,但WinUnit代码中的某些内容正在使用旧文件夹名称查找PDB文件。我猜是他们硬编码的

发现问题

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

我的解决方案

我将文件夹名称改回原来的名称,并且可以正常工作


奇怪。

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

Tools -> Options -> Debugging -> Symbols

您将看到此目录中的
缓存符号:
字段为空;您可以自己浏览/输入路径,也可以直接点击
加载所有符号
按钮。将出现一个警告窗口,提示“由于您尚未选择符号缓存目录,将使用默认值”。现在,您将在前面的空路径字段中看到
C:\Users\XXXX\AppData\Local\Temp\SymbolCache
。再次单击
加载所有符号
,您应该被设置。点击ok,只是为了勤奋,清理并重建您的解决方案。

Visual Studio社区版2015

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

重置后,转到工具>选项>调试>符号>--然后选中Microsoft符号服务器旁边的框

在调试模式下运行你的应用程序,它会打开窗口,说它正在下载一堆不同的.dll文件的符号。让它完成这项工作

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

也有同样的功能