我正在寻找一种在.NET(特别是2.0,特别是C#)中为源代码触发调试中断的方法,就像在该点设置了断点一样,而不必记住在调试器中设置特定的断点,并且不干扰生产运行时。
我们的代码需要吞下生产中的异常,因此我们不会破坏链接到我们的客户端应用程序,但我正在尝试对其进行设置,以便如果碰巧在调试器中运行此类错误将弹出以进行分析,否则将被安全地忽略。
我的使用尝试Debug.Assert(false)
并不理想,我认为它Debug.Fail()
的行为方式相同。从理论上讲,它在生产中应该没有影响,并且在调试时确实会成功停止,但是根据设计(据我所知),如果您想忽略该错误,则无法继续执行,就像使用实际断点一样,就像我们在生产中吞下错误一样。它显然也破坏了对变量状态的评估,因为调试器实际上在本机系统代码中停止,而不是在我们的系统代码中,所以它的调试帮助是有限的。(也许我错过了一些重新审视事物以查看变量等发生的地方的方法。???)
我希望有类似的东西Debug.Break()
,但它似乎不存在(除非可能在更高版本的 .NET 中?),而且Debug
似乎也没有其他方法适用。
更新:虽然 ctacke 的答案是我所寻找的最佳匹配,但我还发现了 Debug.Assert() 的一个技巧——在调试器中运行时——暂停调试器,转到调试代码。断言调用挂起(以绿色突出显示,因为它在框架代码中已关闭)并点击 Step-Out (shift-F11),然后在断言对话框中点击 Ignore。这将使调试器在断言返回时暂停(并且能够继续执行,就好像它没有发生一样,因为它被忽略了)。可能还有其他方法可以做同样的事情(点击重试会更直接吗?),但这种方式很直观。