【问题标题】:Can I have a hit-point in VisualStudio that skips lines?我可以在 VisualStudio 中有一个跳行的命中点吗?
【发布时间】:2009-01-18 15:16:19
【问题描述】:

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

我最终做的是有一个断点(通常是有条件的),然后当断点触发时,我执行 Set Next Statement。当代码多次到达时,这可能会非常耗费人力,因此我创建了一个宏:

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
---------------------------

有谁知道如何解决这个问题?

【问题讨论】:

标签: visual-studio debugging


【解决方案1】:

DTE.ExecuteCommand("Debug.SetNextStatement")

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        在这种情况下你能不使用编译器条件吗?

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-02-07
          • 2022-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-10
          • 2019-01-11
          相关资源
          最近更新 更多