Visual Studio 2010 C# 调试器不会在新断点处停止

Posted

技术标签:

【中文标题】Visual Studio 2010 C# 调试器不会在新断点处停止【英文标题】:Visual Studio 2010 C# Debugger Does not Stop on New Breakpoints 【发布时间】:2014-05-16 18:54:14 【问题描述】:

我有一个 C# 程序,其中调试器在断点方面具有非常特殊的行为。

    如果在我“开始调试”时已设置断点,则调试器将在断点处停止。

    如果我在程序运行时添加断点,调试器将不会在任何这些断点处停止。但是,调试器将继续在我启动程序时设置的断点处停止。为了让新的断点正常工作,我必须停止程序然后重新启动它,或者分离然后重新连接调试器。

    此外,如果我在程序运行时禁用断点,然后重新启用断点,则调试器将不再在该断点处停止。为了让断点再次正常工作,我必须停止程序然后重新启动它或分离然后重新附加调试器。

我不希望每次要添加新断点时都必须分离并重新附加调试器。有谁知道为什么会发生这种情况以及如何使调试器正确停止在运行时添加的断点处?任何其他程序都不会发生这种情况。只有这 1 个程序有这个问题。对于我调试过的所有其他程序,我可以在运行时设置断点,并且调试器会毫无问题地停止。

我正在使用 Visual Studio 2010 Service Pack 1 和 .NET Framework 4。不过,当我使用旧版本的 .NET Framework 时,问题也存在。

【问题讨论】:

您是使用项目引用作为程序集引用,还是使用驱动器上某个路径中的程序集? 我引用了同一解决方案中的其他项目,也引用了驱动器上另一个路径中的程序集。 其他路径上的程序集是否也已更改/重建/重新部署。或者您的某个项目是否意外地通过路径而不是项目引用引用了程序集?那些 for 通常是唯一无法正确调试的奇怪情况。 【参考方案1】:

清理您的解决方案并重新构建。会解决问题的

【讨论】:

并非一直如此。有时您必须手动删除 bin 文件夹中的所有内容。 @Nath 我已经重建了整个解决方案数百次,但问题仍然存在。我只是手动删除了所有的 bin 文件夹和其他输出目录几次,但这也没有影响。【参考方案2】:

您的源代码和程序集可能不同步 - 重新构建应用程序并重试。 P.S:奇怪的是,我听说过很多关于 VS2010 的这个问题:D

编辑:如果您使用某种 dll,也许您需要将调试符号(“pdb”文件)与 dll 放在同一文件夹中。

【讨论】:

我已经多次重新构建整个解决方案,它对这个问题没有影响。【参考方案3】:

我终于弄清楚了问题所在。我们使用从 .DLL 中剥离信息的工具。使用这些“剥离”的 .DLL 会导致调试问题。

使用未剥离的 .DLL 可以消除所有这些断点问题!

【讨论】:

以上是关于Visual Studio 2010 C# 调试器不会在新断点处停止的主要内容,如果未能解决你的问题,请参考以下文章

调试由 C# Visual Studio 2010 插件导入的 C++ dll

Visual Studio 2012 与 Visual Studio 2010 (delta) [关闭]

Visual Studio 2010 测试未在异常时进入调试器

如何用visual studio2010编译已经写好的C#的源代码

Visual Studio 2010:调试时,如何从变量中复制包含回车符的字符串值?

Visual Studio 2010 Express 多语言解决方案