我可以在Visual Studio中找到跳过线的命中点吗?

时间:2009-01-18 15:16:19

标签: visual-studio debugging

我经常遇到我想在调试时禁用某些代码而不实际更改代码的情况。

我最终做的是有一个断点(通常是有条件的)然后当断点触发时我执行设置下一个语句。当代码被多次到达时,这可能是非常耗费人力的,所以我创建了一个宏:

Sub Skip3Lines()
    DTE.ActiveDocument.Selection.LineDown(False, 3)
    DTE.Debugger.SetNextStatement()
End Sub

然后我将断点更改为命中点(right-click -> When Hit...)并告诉它执行此宏。

Visual Studio非常乐意吐出以下对话框:

  

---------------------------
  Error
  ---------------------------
  A macro called a debugger action which is not allowed while responding to an event or while being run because a breakpoint was hit.
  ---------------------------
  OK
  ---------------------------

有谁知道怎么解决这个问题?

4 个答案:

答案 0 :(得分:8)

DTE.ExecuteCommand( “Debug.SetNextStatement”)

答案 1 :(得分:0)

它不会绕过不断变化的代码位,但本地布尔值怎么样?使用if语句包装要有条件跳过的代码。将其默认为true并每次重新初始化它。然后,假设您可以编写将此值更改为false的宏,则可以根据需要启用/禁用命中点。

以前从未这样做过,所以你可以告诉我宏是不是这样的。我通常只使用编辑并继续,注释掉我想跳过的代码。当然,如果代码中有一个lambda或匿名类型/方法,它就不起作用。

答案 2 :(得分:-1)

您可以检测它是否处于调试模式,然后使用if语句让代码不运行,这里有更多信息

http://weblogs.asp.net/jkey/archive/2003/11/23/39383.aspx

答案 3 :(得分:-1)

你能在这个例子中使用编译条件吗?

#IF Config = "Debug" Then
    ' do my debug code here
#Else
   ' do my normal coding here
#End if