为什么Visual Studio 2010无法find/打开PDB文件?
我正在尝试在VS 2010中使用OpenCV。我是一名业余爱好者,正在学习OpenCV wiki的第一步。 但是,当试图debugging我的项目,我得到以下错误:
'C:\ Windows \ SysWOW64 \ ntdll.dll',无法find或打开PDB文件'C:\ Windows \ SysWOW64 \ kernel32.dll',无法find或打开PDB文件'C:\ Windows \ SysWOW64 \ kernellbase。 dll',无法find或打开PDB文件
我在正确的目录中有这些文件,为什么不能打开它们? 我该怎么办才能解决这个问题?
首先更改以下参数:
工具 – >选项 – >debugging – >符号 – >服务器 – >是的
然后按Ctrl + F5 ,你会看到惊人的东西。
我很确定这些是警告 ,而不是错误。 你的项目应该仍然运行得很好。
但是,因为您应该总是尝试修复编译器警告,所以让我们看看我们可以发现什么。 我对OpenCV并不熟悉,而且也没有链接到你正在关注的wiki教程。 但是在我看来,问题在于你运行的是64位版本的Windows(如DLL文件path中的“SysWOW64”文件夹所certificate的那样),但是你正在尝试的是OpenCV为一个32位平台。 所以你可能需要使用CMake来重build项目,如下所述。
更具体地说,列出的文件是Windows系统文件。 PDB文件包含Visual Studio使用的debugging信息,以允许您进入并debugging编译的代码。 您实际上不需要系统库的PDB文件来debugging您自己的代码。 但是,如果你想,你也可以下载系统库的符号 。 进入“debugging”菜单,点击“选项和设置”,然后向下滚动列表框,直到看到“启用源服务器支持”。 确保选中选项。 然后,在左侧的树形视图中,单击“符号”,并确保选中“Microsoft符号服务器”选项。 单击确定closures对话框,然后尝试重build。
Visual Studio Community Edition 2015
整天都有这个错误。 我终于通过转到工具>导入和导出设置>重置所有选项>重置常规设置。
重置后,请转至工具>选项>debugging>符号> – 然后选中Microsoft Symbol Servers旁边的checkbox。
在debugging模式下运行你的应用程序,它会打开窗口,说它正在为一堆不同的.dll文件下载符号。 让它完成这个。
一旦完成,它应该再次工作。
我有同样的问题。 事实certificate,编译我从其他人那里得到的项目,我没有设置正确的StartUp项目(在解决scheme资源pipe理器中右键单击所需的启动项目并select“设置为启动项目”)。 也许这会帮助,欢呼。
对于像我一样在这里find自己的VS2013用户:
Tools -> Options -> Debugging -> Symbols
您将看到Cache symbols in this directory:
中的Cache symbols in this directory:
字段为空; 你可以自己浏览/inputpath,或者直接点击Load all symbols
button。 将出现一个警告窗口,说:“既然你没有select一个符号caching目录,将使用默认值”。 您现在将在之前为空的path字段中看到C:\Users\XXXX\AppData\Local\Temp\SymbolCache
。 再次点击Load all symbols
,你应该被设置。 打好,只是为了勤奋,清理和重build你的解决scheme。
引用第一个线程/另一个可能性VS无法打开或find进程的pdb文件是当你的可执行文件在后台运行。 我正在和mpiexec一起工作,遇到了这个问题。 总是检查你的任务pipe理器,并杀死你将在你的项目中build立的任何执行过程。 一旦我这样做,它debugging或build立好。
此外,如果您尝试继续警告,断点不会被打中,它不会有当前的可执行文件
我发现这些错误有时是由于编译项目时缺乏权限 – 所以我以pipe理员身份运行以使其正常工作。
我有相同的警告。 我不确定这是32位和64位的问题。 刚刚加载了新的符号,一些问题得到了解决,但OpenCV的问题仍然存在。 这是解决vs未解决问题的输出摘录:
'OpenCV_helloworld.exe':Loaded'C:\ OpenCV2.2 \ bin \ opencv_imgproc220d.dll',无法find或打开PDB文件
'OpenCV_helloworld.exe':加载'C:\ WINDOWS \ system32 \ imm32.dll',加载符号(去除源信息)。
代码退出0,以防有人问。
程序'[4424] OpenCV_helloworld.exe:Native'已退出代码0(0x0)。
我有同样的问题。 debugging不适用于OpenCV可执行文件附带的东西。 你必须build立自己的二进制文件。
然后在debugging – >选项和设置 – >debugging – >符号中启用Microsoft符号服务器
我遇到了同样的问题。 当我在C ++代码上运行我的unit testing时,出现“无法find或打开PDB文件”的错误。
日志
当我在Visual Studio中查看输出日志时,发现它正在查找错误的文件夹。 我已经重命名WinUnit文件夹,但WinUnit代码中的某些内容正在使用旧的文件夹名称查找PDB文件。 我想他们硬编码。
发现问题
当我第一次下载并解压缩WinUnit文件时,主文件夹被称为“WinUnit-1.2.0909.1”。 解压缩文件后,我将该文件夹重命名为“WinUnit”,因为在Visual Studio项目设置过程中键入起来更容易。 但显然这打破了findPDB文件的能力,即使我根据WinUnit文档设置了一切。
我的修复
我改变了文件夹名称回到原来的,它的工作原理。
奇怪的。