我正在尝试在VS 2010中使用OpenCV。我是业余爱好者,我正在学习OpenCV维基的第一步。但是,在尝试调试我的项目时,我收到以下错误:
'C:\ Windows \ SysWOW64 \ ntdll.dll',无法找到或打开PDB文件 'C:\ Windows \ SysWOW64 \ kernel32.dll',无法找到或打开PDB文件 'C:\ Windows \ SysWOW64 \ kernellbase.dll',无法找到或打开PDB文件
我在正确的目录中有这些文件,为什么不能打开它们呢?我该怎么做才能解决问题?
答案 0 :(得分:122)
首先更改以下参数:
工具 - >选项 - >调试 - >符号 - >服务器 - >是
然后按 Ctrl + F5 ,你会看到惊人的东西。
答案 1 :(得分:19)
我很确定这些是警告,而不是错误。你的项目仍应运行得很好。
但是,由于您应该总是尝试修复编译器警告,让我们看看我们能发现什么。我对OpenCV并不熟悉,也没有链接到你所关注的wiki教程。但它在我看来问题是你运行的是64位版本的Windows(由DLL文件路径中的“SysWOW64”文件夹证明),但是你正在尝试的OpenCV内容是对于32位平台。因此,您可能需要使用CMake重建项目,如here所述。
更具体地说,列出的文件是Windows系统文件。 PDB文件包含Visual Studio用于允许您进入和调试已编译代码的调试信息。实际上,您不需要系统库的PDB文件来调试自己的代码。但是如果你愿意,你也可以download the symbols获取系统库。转到“调试”菜单,单击“选项和设置”,然后向下滚动右侧的列表框,直到看到“启用源服务器支持”。确保选中该选项。 然后,在左侧的树视图中,单击“符号”,并确保选中“Microsoft Symbol Servers”选项。单击“确定”关闭对话框,然后尝试重建。
答案 2 :(得分:8)
Visual Studio Community Edition 2015
整天都有这个错误。我最后通过转到工具>导入和导出设置>修复了它。重置所有选项>重置常规设置。
重置后,请转到工具>选项>调试>符号> - 然后选中Microsoft Symbol Servers旁边的框。
在调试模式下运行您的应用程序,它将打开窗口,说它正在为一堆不同的.dll文件下载符号。让它完成这个。
一旦完成,它应该再次起作用。
答案 3 :(得分:3)
我遇到了同样的问题。事实证明,编译我从其他人那里获得的项目时,我没有设置正确的StartUp项目(在解决方案资源管理器中右键单击所需的启动项目并选择“set as StartUp Project”)。也许这会有所帮助,欢呼。
答案 4 :(得分:2)
对于 VS2013 用户,我发现自己在这里:
Tools -> Options -> Debugging -> Symbols
您会看到Cache symbols in this directory:
字段为空;您可以自己浏览/输入路径,也可以直接点击Load all symbols
按钮。将出现一个警告窗口,指出“由于您未选择符号缓存目录,因此将使用默认值”。您现在将在之前为空的路径字段中看到C:\Users\XXXX\AppData\Local\Temp\SymbolCache
。再次点击Load all symbols
,您应该进行设置。点击确定,只是为了勤奋,清理并重建您的解决方案。
答案 5 :(得分:1)
参考第一个线程/另一种可能性VS无法打开或找到该进程的pdb文件,当您在后台运行可执行文件时。 我正在使用mpiexec并遇到了这个问题。始终检查您的任务管理器并终止您将在项目中构建的任何exec进程。一旦我这样做,它调试或建立良好。
此外,如果您尝试继续发出警告,则不会触发断点,也不会有当前的可执行文件
答案 6 :(得分:0)
我发现这些错误有时是因为编译项目时缺少权限 - 因此我以管理员身份运行以使其正常工作。
答案 7 :(得分:0)
我有同样的警告。我不确定这是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:Native'已退出 代码0(0x0)。
答案 8 :(得分:0)
我遇到了同样的问题。调试不适用于OpenCV可执行文件附带的东西。你必须建立自己的二进制文件 然后在Debug->选项和设置 - > debug-> symbols
中启用Microsoft Symbol Servers答案 9 :(得分:0)
我遇到了同样的问题。当我在C ++代码上运行我的单元测试时,我收到一条错误,上面写着“无法找到或打开PDB文件”。
<强>日志强>
当我查看Visual Studio中的输出日志时,我看到它正在查找错误的文件夹。我已经重命名了WinUnit文件夹,但WinUnit代码中的某些内容是使用旧文件夹名称查找PDB文件。我猜他们硬编码了。
发现问题
当我第一次下载并解压缩WinUnit文件时,主文件夹名为“WinUnit-1.2.0909.1”。解压缩文件后,我将文件夹重命名为“WinUnit”,因为在Visual Studio项目设置期间更容易输入。但显然这打破了查找PDB文件的能力,即使我根据WinUnit文档设置了所有内容。
我的修复
我将文件夹名称更改回原始文件,然后就可以了。
怪异。
答案 10 :(得分:0)
这里有相同的问题,但是有不同的解决方案。
首先,我尝试了以下方法,但均无效果:
加载seanlitow建议的符号
删除/添加对PresentationFramework和PresentationCore的引用
解决方案是撤消我对代码进行的最后几处更改。我刚刚为检查和未检查的事件添加了两个单选按钮和事件处理程序。删除我最近的更改后,所有内容都会编译。然后,我又添加了 exact 更改并正确编译了所有内容。我不明白为什么这行得通-我唯一能想到的就是我的VS解决方案有问题。无论如何,如果其他建议均无效,则可以尝试还原最近的更改。注意:如果您关闭并重新打开Visual Studio,您的撤消历史记录将丢失。.因此您可以在关闭VS之前尝试这样做。