【问题标题】:Visual Studio 2010: breakpoint hits on wrong fileVisual Studio 2010:断点命中错误文件
【发布时间】:2012-07-13 20:08:32
【问题描述】:

我不希望任何人能够回答这个问题,但无论如何我都会尝试:

在 Visual Studio 2010 中,当我单击以在任何文件中设置断点时,会打开另一个文件,并将断点设置为该文件中的相同行号。

举例说明:

  1. 我打开 foo.cs
  2. 我点击在第 100 行添加断点
  3. VS 打开 bar.cs 并在(错误的)第 100 行设置断点
  4. 我在微软吐槽

一如既往,我们将不胜感激。

【问题讨论】:

  • 你试过了吗:清理解决方案,删除bin和obj目录,重建所有解决方案?
  • 碰巧,它是否发生在不同项目中的同名文件上(不像你的 foo/bar 示例)?
  • 我以前从未听说过这个。 pdb 以某种方式搞砸了。可能是构建问题,可能是因为它是 13 号星期五。我必须根据提供的信息量选择后者。
  • 我有同样的问题,当我尝试设置断点时它甚至跳转到错误的文件!当我尝试进入文件时同样的问题。对我来说,它似乎总是发生在 *.h 文件中。
  • 完全相同的问题。它是不同项目中的相同文件名。你修好了吗?

标签: visual-studio-2010 breakpoints


【解决方案1】:

你并不孤单!

我在使用 Visual Studio 2015 时遇到了完全相同的问题,这很烦人。 以我的经验,只有当 2 个不同的项目(在同一个解决方案中)都包含同名的文件时才会发生这种情况。

这与不同的 PDB 文件及其加载顺序有关。如果调试器可以找到名称匹配的文件,它似乎并不关心它是否在好的 PDB 中找到。

很遗憾,这已在 MSDN (msdn.microsoft.com/en-us/library/h6aesyw2%28v=vs.100%29.aspx) 上记录了一段时间,但仍未解决。

Microsoft 的解决方法是在添加断点时写入完整的文件路径,但我认为这不是一个可行的解决方案,因为它会大大减慢调试过程。

这是我发现的其他“解决方案”:

  1. 重命名文件名(使它们变得唯一);
  2. 删除解决方案的 .SUO 文件似乎在某些情况下有效(对我不起作用);
  3. 删除“错误”项目的 PDB 文件(希望您不要同时调试两者);
  4. 更改“错误”项目的选项,使其不会生成/读取 运行时的 PDB 文件。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-28
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    相关资源
    最近更新 更多