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