“没有调试信息”,但它就在那里

时间:2015-07-21 15:49:55

标签: c++ visual-studio debugging

我在MSVS 2013中有一个C ++项目,在调试时会出现问题:每当我运行调试会话时,会出现一个消息框,说“没有调试信息 - 'xy.exe'的调试信息不​​能是发现或不匹配。找不到PDB文件。你想继续调试吗?“这是一个常见问题,问题被多次提出,但是,到目前为止,我找到的答案都不适用于我的案例。

  1. 项目属性 - >配置属性 - > C / C ++ - > 优化 - >优化已停用
  2. 项目属性 - >配置属性 - >链接器 - >调试 - >生成调试信息已打开
  3. 路径和文件名是正确的;项目属性 - >配置属性 - >链接器 - >调试 - >生成程序数据库文件是“$(OutDir)$(TargetName).pdb”(输出文件是“$(OutDir)$(TargetName)$(TargetExt)”,所以这里也没有错误配置)
  4. 我尝试手动删除文件,重新启动Visual Studio,清理和重建。从文件时间戳我看到它确实是刚刚创建的PDB文件,exe和pdb都构建在同一个文件夹中,并且命名正确。
  5. 有人建议双重检查任务管理器,看看devenv.exe是否仍然在后台运行 - 事实上,确实如此。我杀了它,删除了PDB文件,重新启动,清理,重建,没有运气。
  6. 我将启动项目转换为另一个启动项目,如海报建议[1]。没有运气。
  7. 当主项目的本地PDB文件与整个可执行文件的最终PDB文件同名时,有人报告了此问题[2]。这不是这种情况。
  8. 当我打开模块窗口[3]时,我看到对于我的exe,在“符号状态”列中,它显示“无法找到或打开PDB”文件。当我尝试右键单击 - >加载符号,我看到它们就在那里(例如xy.exe的xy.pdb)。当我选择它们时,会在消息框中显示“在此文件夹中找不到加工符号文件。”
  9. 有趣的是,此解决方案中的所有项目都不起作用。但是,其他项目没有任何问题。我试图将项目属性中的每个设置与有效的设置进行比较,但我找不到任何差异。

    还有什么想法?

    [1] https://stackoverflow.com/a/15378106/4508058

    [2] https://stackoverflow.com/a/21640745/4508058

    [3] https://stackoverflow.com/a/540599/4508058

2 个答案:

答案 0 :(得分:1)

好的,给未来的读者一个暗示:现在它终于有效了。我注意到该项目与另一个项目共享了它的中间目录。但是,只需更改此项,清理,重建,甚至手动删除中间目录也无济于事。但是经过一些构建之后,它终于奏效了,所以它可能与它有关(?)。所以我对这个问题没有绝对的解决方案,但也许有帮助。

我有时仍会收到上面评论中提到的链接器错误(LNK1209:程序数据库'D:\ work-coding- \ Projects \ vrtheater \ LoadingApp \ bin \ LoadingAppD.pdb')所以仍然可能存在有些不对劲......

答案 1 :(得分:0)

c ++编译还需要生成调试信息/ Zi。如果还设置了,请使用带有!sym noisy的windbg来查看它在何处加载符号。