【问题标题】:How to force debugger to skip a piece of code?如何强制调试器跳过一段代码?
【发布时间】:2013-02-22 12:13:00
【问题描述】:

我的项目中有大量代码已经调试了 50%。
每次我尝试调试它时,我都必须在不需要的代码之后手动设置断点以跳过它。
有没有办法告诉调试器不要调试那部分代码? 有什么扩展吗?

Let's face 调试器在第 1500 行。

Method1(){
   Line 1500 CODE
   Line 1501 CODE
   ...
   Line 1726 CODE
   Line 1727 CODE
   ...
   Line 2200 CODE
}

我不需要调试 1727 和 2200 之间的行。

注意:这不仅仅是一件。否则我可以使用手动断点

【问题讨论】:

  • 如果它真的会跳过这些行并且你的代码没有被执行,那不会破坏你的其余代码吗?
  • @MrFox 必须执行但不能调试。
  • @MrFox - OP 意味着他不想手动调试这些(或设置断点),只需让调试器自动跳过它们。
  • 我认为这将是一个很棒的功能。虽然我同意@Oded 的观点,即在某些情况下(这一个)重构方法会起作用,但还有其他情况,例如涉及您可能想要的不断被击中的事件(cough OnPaint) ,即时告诉调试器在调试会话期间不要运行(半永久,但不是永久)。就像一个断点......或“跳过点”(tm)......也许VS扩展应该出现在我们的方式......;-)
  • 另一个很方便的场景:你愚蠢的同事认为放置一个 System.Diagnostics.Debugger.Break() 100% 的时间是个好主意。啊!

标签: c# .net vb.net visual-studio debugging


【解决方案1】:

不知道为什么它不在答案中,但是您可以通过 CTRL+SHIFT+F10 或将黄色箭头拖动到想要的行来设置下一个语句,并且不会执行下一个语句之前的代码。

找到它here

【讨论】:

    【解决方案2】:

    如果有问题的代码封装在一个方法中,您可以通过在其上应用DebuggerStepThroughAttribute 来跳过该方法。

    除此之外,设置断点是怎么做的。

    因此,将这段代码提取到一个方法中,并将属性应用到它;)

    【讨论】:

    • @Mahdi - 你是什么意思?
    • 您在我的问题中看到的代码位于一个可能调用或不调用另一种方法的方法中。
    • @Mahdi - 我仍然不关注。如果将 1727 和 2200 之间的行提取到一个方法中,然后将属性放在该方法上,则调试器将不会通过该方法。
    • 被忽略的代码与代码的其他部分有关,所以我不能这样做
    • @Mahdi:您应该能够毫无问题地将部分方法提取到另一种方法中。实际上,即使有超过 500 行的类通常也是一个不好的迹象。更别说单一的方法了……
    【解决方案3】:

    您也可以单击要跳到的行并按 Ctrl+F10(运行到光标处)。它将直接跳转到该行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      相关资源
      最近更新 更多