C++ 找不到调试信息或与visual studio';不匹配;s
我复制了一个现有项目并重命名了文件夹。现在我在编译应用程序时遇到了这个错误 找不到调试信息或调试信息不匹配。没有加载符号。C++ 找不到调试信息或与visual studio';不匹配;s,c++,c,visual-studio,visual-studio-2008,C++,C,Visual Studio,Visual Studio 2008,我复制了一个现有项目并重命名了文件夹。现在我在编译应用程序时遇到了这个错误 找不到调试信息或调试信息不匹配。没有加载符号。 是否要继续调试 如果单击“是”,它将编译并运行良好。但现在我必须处理这个信息。只是好奇我在项目属性中更改了什么以使其停止 pdb或程序数据库文件似乎丢失(基本上,路径已更改,编译器无法再找到)。有关更多信息,请参阅相关文章。主要原因是您没有匹配的pdb和exe 一些可能的解决办法: 您正在版本中编译,而不是调试 您需要清理/构建或重建 您没有在与exe相同的目录中生成pd
是否要继续调试
如果单击“是”,它将编译并运行良好。但现在我必须处理这个信息。只是好奇我在项目属性中更改了什么以使其停止 pdb或程序数据库文件似乎丢失(基本上,路径已更改,编译器无法再找到)。有关更多信息,请参阅相关文章。主要原因是您没有匹配的pdb和exe 一些可能的解决办法:
- 您正在版本中编译,而不是调试
- 您需要清理/构建或重建
- 您没有在与exe相同的目录中生成pdb文件
- 您有一个不匹配的pdb,可能复制的源代码比今天的日期更新,并且某些内容无法正常构建李>
- 尝试清除所有调试对象文件
- 您正在附加到从build exe和pdb所在的不同位置启动的进程
- 重新启动Visual Studio
- 右键单击项目->属性
- 配置属性->链接器->调试
- 将“生成调试信息”从否切换为是
重建您的项目并重试,它现在应该在没有消息的情况下运行:)我遇到了类似的问题,原因是我在另一个进程中运行了解决方案的一个项目,该进程无法终止。我没怎么想。因此,当我在一个单独的环境中构建解决方案时,其中一个pdb文件不匹配,因此最后我无法加载任何pdb文件。我刚重新启动了我的电脑,这就解决了它
祝你好运我时不时会遇到这种情况,在调试代码和进行更改时,visual studio似乎会缓存pdb信息,有时会卡住。执行重建解决方案、删除pdb并创建新pdb并不能解决问题 当然,我有生成调试信息以及所有需要的信息,特别是因为这是在多次调试代码时发生的 VisualStudio似乎对内存中的pdb很满意,并且拒绝更新它,不管pdb中的时间戳甚至大小变化如何 重置此设置的唯一方法是退出VisualStudio(IDE)并重新启动它 在一些罕见的情况下,IDE可能仍在后台运行(process explorer在那里显示),并且可能会保持文件的句柄处于打开状态。可以在重新启动IDE之前终止进程
祝您好运重新启动Visual Studio可以修复此问题的一个实例。在解决方案浏览器中的项目上单击鼠标右键=>Clean=>Build。 如果您的构建生成了一个.pdb(查看您的目标目录)
如果没有,您应该按照其他帖子中提到的步骤启用调试我遇到了同样的问题,并尝试了上述所有解决方案,但它对我没有帮助。 然后我随机地找到了一个新的解决方案,它成功了 解决方案是,如果您在一个解决方案中有许多项目,那么您应该将任何一个(您必须决定的特定项目)项目标记为“设置为启动项目”。 右键单击该特定项目,然后单击“设置为启动项目”
它对我很有效。我在VS2012中遇到了这个错误。这肯定是由Visual Studio中的错误引起的,当主项目的本地PDB文件与整个可执行文件的最终PDB文件同名时(即使两者位于不同的目录中!) 考虑这个例子 解决方案由三个项目组成:
main
、a
和b
main
是可执行文件的顶级项目,而a
和b
是链接到main
的库
在所有三个项目中,$(IntDir)
变量设置为$(SolutionDir)\$(配置)\$(ProjectName)\
。这意味着projectmain
将其中间文件转储到Debug\main\
,projecta
-转储到Debug\a\
等等
在C/C++->输出文件
设置中,所有三个项目都将程序数据库文件名
值设置为$(IntDir)$(TargetName).pdb
。这意味着projectmain
将其本地PDB文件生成为Debug\main\main.PDB
,projectb
生成为Debug\b\b.PDB
,依此类推
最后,在项目main
的Linker->debug
设置中,Generate Program Database File
值设置为$(OutDir)$(TargetName).pdb
。这意味着整个可执行文件的全局PDB文件将生成为Debug\main.PDB
请注意,在此设置中,每个PDB文件都在其自己的单独目录中生成
在此设置中,如果您尝试在调试器下运行程序,您将获得找不到调试信息或不匹配的调试信息。如果您查看Debug\main.pdb
文件(将存在),您会注意到它与Debug\main\main.pdb
文件完全相同!也就是说,main
的本地PDB以某种方式覆盖了最终可执行文件的全局PDB。也就是说,调试器抱怨PDB文件“错误”是正确的。这的确是错误的
同样,在上面的设置中,最终的全局PDB以某种方式被顶级项目的本地PDB覆盖。我不知道为什么会这样。这似乎是一个错误。(注意
...\Custom Librarry (MyDll.dll(
...\Custom Librarry (MyDll.dll)