2011-07-18 38 views
0

我在21 C#项目(ANY CPU)解决方案中的单个C#项目存在问题。Visual Studio 2010 SP1 - C#PDB文件损坏 - 显示错误的行号

断点没有命中 - 当我强制调试器附加(Debugger.Launch())时,我可以看到调用堆栈显示正确的功能,但是行号非常错误。

在一个具体的例子中,我在1020行的第346行有一个断点 - 但是调试器导航到第10745行,这导致调试器显示完全不同的文件的结果。从日志文件中我可以看到正在执行的方法正确。

经过很多头痛之后,我选择在安装了VS 2010 SP1的2台不同的机器上尝试 - 并且这些机器显示出完全相同的行为。

我已经尝试完全清理解决方案,手动删除所有PDB文件,重新启动VS,重新启动机器,清空VS Symbol缓存(工具>选项>调试>符号),删除所有“符号文件(.pdb)位置“并删除解决方案的”.SDF“数据库。

我在调试模式下编译项目,并验证项目上未启用“优化代码”。

解决方案中不同项目的断点确实起作用 - 所以看起来只有这一个项目出于某种原因生成了损坏的PDB文件。但是,我不明白为什么这个单一的项目应该与其他项目不同。唯一真正的区别是我在这个特定的项目中有2个Web引用 - 并且足够有趣的是,在这些存根类中,PDB文件总是指示调试器最终结束。

特定的解决方案正在一个完全修补的Windows 2003 x86机器上编译和调试。

如果有人能给我一个提示如何解决这个问题,我将不胜感激。

+0

只是一个想法,重命名Web引用,然后再试一次。 –

+0

试过这个 - 没有运气 - 同样的问题 – user849496

回答

1

尝试右键单击项目,转到生成选项卡 ​​- >单击高级按钮 - >检查输出区域 - >选择调试信息为仅限pbd。有时它会改变。

+0

谢谢你的建议,非常感谢。然而,没有运气 - 同样的行为。它处于“完全”状态,将其更改为“仅限pdb”,但没有解决问题,为什么我又将其重新更改为“完整”。 – user849496

+0

您是否认为环境运行?或者一些缓存的东西。也尝试删除bin和obj文件夹并重新编译。 – Howard

+0

我试图清除所有我能想到的 - 包括删除bin和obj文件夹。我认为这可能是VS中的一个错误,由于某种原因生成无效的PDB文件。不知道为什么突然发生 - 一年半以来一直没有出现问题。没有做任何不寻常的事情,只是通过添加6行代码来修改单个方法。是的,在绝望中,我试图删除这个修改,但结果相同。 – user849496