如何在VB.NET中手动跳转到正常不执行的代码行?
在VB.NET中实现手动触发的调试代码行
你需要的是一段仅能通过手动设置执行点触发、正常流程不会进入的代码,VB6的If 0 Then方案在VB.NET中失效,是因为VB.NET编译器会对静态可判定为永远假的条件分支进行优化,直接标记该分支代码为不可达,导致无法设置执行点。
以下是可行的解决方法:
方法一:使用局部变量避免编译器优化
声明一个运行时赋值为False的局部变量,编译器无法静态判定该变量的值,因此不会优化分支代码:
Dim manualTrigger As Boolean = False If manualTrigger Then _SomeValue = "This can only be hit by setting the execution here manually" End If
调试时可以直接将执行点拖到分支内的代码行,强制执行这段逻辑。
方法二:结合调试器附加标记(仅调试模式生效)
利用Debugger.IsAttached让编译器认为分支存在执行可能,同时确保正常调试流程不会进入:
If System.Diagnostics.Debugger.IsAttached AndAlso False Then _SomeValue = "This can only be hit by setting the execution here manually" End If
方法三:限定仅在Debug编译模式下存在
如果不需要在Release版本保留这段代码,可以用编译指令包裹,避免影响生产环境:
#If DEBUG Then Dim debugOnlyTrigger As Boolean = False If debugOnlyTrigger Then _SomeValue = "This can only be hit by setting the execution here manually" End If #End If
注意:确保项目当前处于Debug编译模式(Release模式下编译器仍可能优化掉部分代码)。
内容的提问来源于stack exchange,提问作者tmighty
相关产品推荐
相关产品推荐

