VB.NET:在debug.assert(false)行中顺利停止

时间:2012-12-13 07:41:12

标签: vb.net debugging messagebox

我总是写这样的代码:

If SomethingIsTrue Then
    'DoThis
ElseIf SomeOtherThingIsTrue Then
    'DoThat
Else
    Debug.Assert (False)'Doh!! I forgot to handle a certain condition
End If

在VB6中,这很有效。在IDE中测试我的应用程序时,它只是停在Debug.Assert(False)行中,我看到了我错过的地方。

但是VB.NET不止于此,而是给了我一个巨大的消息框。这似乎是Debug.Assert的标准行为。

我有2个问题,请: 1)如何让它在该行中顺利停止而不是显示消息框? 2)我怎样才能使它在运行时(!)没有显示消息框,而是我的应用程序只是在不停止或显示消息框的情况下继续运行?

谢谢!

2 个答案:

答案 0 :(得分:2)

我会沿着这一行写点什么:

if debugger.isattached=True then
   debugger.break
end if

只需将其包装在共享子中,您只需在else语句中调用它即可。

代码是在没有Visual studio的情况下输入的,所以我希望它可以正常工作。

答案 1 :(得分:0)

  

如何让它在该行中顺利停止而不是显示消息框?

只需在弹出的消息框中单击重试即可。来自MSDN

  

如果应用程序在调试器中运行,则单击“重试”会将您发送到调试器中的代码,如果不是,则提供打开调试器。

单击忽略将忽略该消息。


  

如何才能在运行时(!)显示消息框,而不是我的应用程序在不停止或显示消息框的情况下继续运行?

我不是说在运行时的意思,因为所有断言都是在代码运行时发生的,因此在运行时。

如果您的意思是在没有调试器的情况下运行应用程序时应忽略断言,只需创建发布版本而不是调试版本。 Debug.Assert方法仅适用于调试版本,调试版本的重点在于它们易于调试。


如果您仍然要取消消息框,请参阅Customizing Assert behavior

  

例如,您可以覆盖TraceListener.Fail方法以写入事件日志,而不是显示Assertion Failed对话框。

     

要以这种方式自定义输出,您的程序必须包含一个侦听器,您必须从TraceListener继承并覆盖其TraceListener.Fail方法。