调试 - 使用断点跳过代码

时间:2011-03-24 19:08:12

标签: visual-studio

您知道如何点击断点上的黄色箭头并将其向下拖动以跳过执行代码行吗?那么,是否可以创建一个“When Hit”宏(或类似的东西)来跳过包含断点的行的执行?

所以不要像

那样编写代码
if(!Debugging)
   Response.Redirect("LoginFail.aspx");

我可以在Response.Redirect()行上设一个断点,“当点击”时会跳过它。

5 个答案:

答案 0 :(得分:6)

我不知道这样做的方式。但是,您可以设置断点的“When hit”选项以运行宏。编写获取当前行的宏应该不难,然后设置下一个调试器行。您可能希望查看Debugger.SetNextStatement方法。

像这样的宏应该这样做:

Public Sub SkipNextLine()
    ActiveDocument().Selection.LineDown()
    DTE.ExecuteCommand("Debug.SetNextStatement")
End Sub

答案 1 :(得分:1)

是的,您可以使用跟踪点直接执行此操作。

  1. 通过打破一次,找到函数底部的return语句或最终结束大括号的地址,然后在Registers窗口中查看EIP寄存器或添加Watch for“@eip”。 / LI>
  2. 将跟踪点添加到要跳转的行。请记住,跳转将在执行该行之前发生。使用步骤1中的地址,跟踪点的内容应为{@eip = address}
  3. 另见https://stackoverflow.com/a/14695736/301729

答案 2 :(得分:0)

我不知道用断点做到这一点但你可以使用编译器指令来跳过代码

#if (DEBUG)
//this code is skipped in debug mode
#endif

答案 3 :(得分:0)

尝试:

#if DEBUG
Response.Redirect("LoginFail.aspx");
#endif

确保在构建属性中检查了DEBUG常量。

答案 4 :(得分:0)

同意使用编译器指令或任何其他要求在代码中添加逻辑。但是,也理解编辑调试代码并不总是一个选项(例如,不拥有代码可能意味着没有构建它所需的所有资源)。

如果这是你的情况,我担心编写你自己的宏或等待VS有一个内置的等价物是你唯一的选择。