4

我们可以在确保它不做任何其他事情的同时设置断点。

在 c 中,这将是 while(false);

在 vb.net 中做什么?

4

8 回答 8

10

如果你总是需要它在那里打破你可以放 StopDebugger.Break()

于 2013-02-24T14:57:52.577 回答
2

我的两分钱...

您可以使用冒号将任何一系列命令组合到一行中:

If False Then : End If
Select Case False : Case Else : End Select

我也把它变成了一个潜艇。然后它得到一个可识别的自己的名字:

'Definition...
Public Sub noop () 'Or Private, Protected, etc.
End Sub

'Usage...
Sub Main()
    If sometest Then
        noop
    Else
        MsgBox "test is false"
    End If
End Sub
于 2020-01-09T19:03:50.700 回答
2

有一个合法的用例。当感兴趣的语句之后需要一个临时断点并且这是 if 语句中的最后一行时,需要一个额外的 no-op 类型语句来放置临时断点。在这种情况下,我使用:

If someCondition >0 Then

    doSomething
    Space (1)    'Dummy line to place breakpoint
End If

这将返回一个包含一个空格的字符串,但不会将其分配给任何内容。我在 VBA 中使用它,但在 .net 中也支持它

于 2017-11-09T14:41:09.737 回答
1

如果您出于某种原因真的想要 No-Op (这会变成最无效的单行代码的竞赛吗?!),这些怎么样?

System.Threading.Thread.Sleep(1)- 1ms 不太可能在循环之外产生巨大影响

Debug.Write("")- 似乎没有输出任何东西。

于 2014-07-02T08:48:03.833 回答
1

非常奇怪的问题,您可以在代码中的任何位置放置一个断点。但这里有一些无用的行:

 Do While False
 Loop

 While False
 End While

甚至以下:

 Dim hello = Nothing

或这个 :

 Format("", "")
于 2013-02-24T12:59:29.520 回答
1

我知道这是一个旧查询,但是对于它的价值,我对原始问题的首选解决方案是 Debug.Assert (vbTrue)

如果您愿意,您可以使用变量而不是 vbTrue,然后通过更改一个变量来启用/禁用代码中的所有断点

Dim bDisableBreakpoints as Boolean: bDisableBreakpoints = vbTrue
'your code here
Debug.Assert (bDisableBreakpoints)
'rest of your code

只需将 bDisableBreakpoints 更改为vbFalse,断点将设置在您使用过 Debug.Assert 的任何位置

于 2020-10-08T12:03:14.977 回答
1

no-op 语句也有助于很好地记录代码并使其更易于理解。例如,您可以输入 A = A 之类的语句。

例如:

如果 MyNumber => 100 则 A = A
否则:

于 2019-09-26T09:42:54.030 回答
0

我个人最喜欢的是

dim b=1

然后我在那里放了一个断点。

于 2020-10-08T13:56:30.933 回答