调试信息无法找到或与visual studio不匹配

num*_*l25 41 c c++ visual-studio-2008 visual-studio

我复制了一个现有项目并重命名了该文件夹.现在,当我尝试编译应用程序时,我收到此错误

__PRE__

如果我单击是,它编译并运行正常.但现在我必须处理这个消息.只是好奇我在项目属性中改变了什么来让它停下来.

Nic*_*ume 66

您可能已停用项目的调试信息:

  • 右键单击您的项目 - >属性
  • 配置属性 - >链接器 - >调试
  • 将"生成调试信息"从"否"切换为"是"

重建你的项目并重试,它现在应该在没有消息的情况下运行:)

  • 这么容易解决! (3认同)

Bri*_*ndy 30

主要原因是你没有匹配的pdb和exe.

一些可能的解决方

  • 您正在编译发布而不是调试
  • 您需要清理/构建或重建
  • 您没有在与exe相同的目录中生成pdb文件
  • 你有一个不匹配的pdb,也许复制的源比今天的日期更新,并且有些东西没有正确构建.
  • 尝试清除所有调试对象文件
  • 您附加到从构建exe和pdb所在的位置开始的进程
  • 重新启动Visual Studio


小智 10

这种情况经常发生在我身上,在调试代码和进行更改时,似乎visual studio缓存了pdb信息,有时它会卡住.执行重建解决方案,删除pdb并创建新的解决方案并不能解决问题.

当然,我确实有生成调试信息及其所需的全部内容,特别是因为在调试代码几次时会发生这种情况.

Visual Studio似乎对内存中的pdb感到满意,并拒绝更新它,无论时间戳或pdb中的大小更改如何.

重置此操作的唯一方法是退出Visual Studio(IDE)并再次重新启动它.

在极少数情况下,IDE可能仍在后台运行(进程资源管理器在那里显示)并且可能保持文件句柄处于打开状态.您可以在重新启动IDE之前终止该进程.

祝好运


AnT*_*AnT 7

我刚在VS2012遇到这个错误.它肯定是由Visual Studio中的一个错误引起的,当主项目的本地PDB文件与整个可执行文件的最终PDB文件同名时(即使这两个文件位于不同的目录中!

考虑这个例子.

解决方案包括三个项目:main,a,和b.main是可执行文件的顶级项目,a而且b是链接到的库main.

在所有三个项目中,$(IntDir)变量设置为$(SolutionDir)\$(Configuration)\$(ProjectName)\.这意味着项目main将其中间文件转储到Debug\main\项目a- Debug\a\等等.

C/C++ -> Output Files设置中,所有三个项目都Program Database File Name设置了值$(IntDir)$(TargetName).pdb.这意味着该项目main产生的本地PDB文件Debug\main\main.pdb,项目bDebug\b\b.pdb等等.

最后,在Linker -> Debugging项目设置main中将Generate Program Database File值设置为$(OutDir)$(TargetName).pdb.这意味着将生成整个可执行文件的全局PDB文件Debug\main.pdb.

请注意,在此设置中,每个PDB文件都在其自己的单独目录中生成.

在此设置中,如果尝试在调试器下运行程序,则无法找到调试信息或与错误不匹配.如果您查看Debug\main.pdb文件(将存在),您会注意到它与Debug\main\main.pdb文件完全相同!也就是说,本地PDB main设法覆盖了应该是最终可执行文件的全局PDB.即调试者抱怨PDB文件"错误"是正确的.这确实是错的.

同样,在上面的设置中,最终的全局PDB以某种方式被顶级项目的本地PDB覆盖.我不知道为什么会这样.这似乎是一个错误.(请注意,即使这些PDB文件具有相同的名称,它们也会在不同的目录中生成,即它们不应该冲突.)

解决此问题的解决方法是为项目的本地PDB main指定其他名称.例如,刚去C/C++ -> Output Filesmain项目和变化Program Database File Name$(IntDir)$(TargetName)_local.pdb(或者$(IntDir)12345.pdb,如果你愿意的话).这将消除冲突并解决问题.