我经常遇到这样的情况:我想在调试时禁用一些代码,而不实际更改代码。
最后我要做的是有一个断点(通常是有条件的),然后当断点触发时,我执行一个Set Next语句。当代码多次到达时,这会非常费时,所以我创建了一个宏:
Sub Skip3Lines()
DTE.ActiveDocument.Selection.LineDown(False, 3)
DTE.Debugger.SetNextStatement()
End Sub
然后,我将断点改为命中点(right-click -> When Hit...
),并告诉它执行这个宏。
Visual非常高兴地弹出了以下对话框:
---------------------------
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
---------------------------
有人知道怎么绕过这件事吗?
发布于 2009-07-08 05:13:49
DTE.ExecuteCommand("Debug.SetNextStatement")
发布于 2009-01-18 07:24:53
它不会绕过不断变化的代码位,但是本地布尔值如何?用if语句包装要有条件跳过的代码。默认为true,每次都重新初始化它。然后,假设您可以编写一个将此值更改为false的宏,则可以启用/禁用按需命中点。
从来没有这样做过,所以你可以告诉我,如果宏不像这样工作。我通常只使用编辑和继续,注释掉我想跳过的代码。当然,如果代码中包含lambda或匿名类型/方法,则不起作用。
发布于 2009-01-18 07:26:18
您可能能够检测到它是否处于调试模式,然后使用if语句使代码无法运行,下面是更多信息
https://stackoverflow.com/questions/455290
复制