如何强制调试器跳过一段代码?

7

我的项目中有大量的代码已经调试了50%。

每次我尝试调试它时,我都必须手动设置断点以跳过不需要的代码段。

有没有一种方法可以告诉调试器不要调试那部分代码?

有没有相应的扩展程序可以使用?

让我们面对现实,调试器在第1500行。

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

我不需要调试1727至2200行之间的代码。

注意:这不仅仅是一段代码。否则,手动设置断点就足够了。


如果它真的跳过了那些行,你的代码没有被执行,那么这不会破坏你的其余代码吗? - MrFox
@MrFox 它必须被执行但不被调试。 - Mohsen Sarkar
@MrFox - OP的意思是他不想手动调试这些代码(或在之后设置断点),只希望调试器自动跳过它们。 - Oded
1
我认为这将是一个很棒的功能。虽然我同意@Oded在某些情况下(比如这个)重构方法会起作用,但在其他情况下,比如涉及不断被触发的事件(咳咳 OnPaint),您可能希望在调试会话期间即时地告诉调试器不要运行(半永久性,但不是永久性)。就像断点一样...或者是“跳过点”(tm)...也许VS扩展应该出现在我们的视野中...;-) - Adam Plocher
另一个场景下这会很方便:当你愚蠢的同事认为在 System.Diagnostics.Debugger.Break() 中设置一个断点是个好主意,并且它每次都被触发。啊! - Adam Plocher
3个回答

25

不知道为什么没有在答案中提到,但是你可以通过CTRL+SHIFT+F10设置下一语句,或将黄色箭头拖动到所需行并且下一语句之前的代码将不会被执行。

这里找到。


20
如果问题中的代码被封装在一个方法中,您可以通过在其上应用DebuggerStepThroughAttribute来跳过该方法。
除此之外,设置断点是如何做到的。
因此,将此代码提取到一个方法中,并对其应用属性即可 ;)

@Mahdi - 你是什么意思? - Oded
我问题中所展示的代码位于一个方法内部,该方法可能会调用其他方法或不调用。 - Mohsen Sarkar
@Mahdi - 我还是不明白。如果你把1727到2200行之间的代码提取出来放到一个方法里,然后在这个方法上加上属性,那么调试器就不会进入这个方法了。 - Oded
忽略的代码与其他部分的代码相关,所以我不能这样做。 - Mohsen Sarkar
@Mahdi - 你可以尝试使用“提取方法”重构来实现。 - Oded
1
@Mahdi:你应该可以轻松地将方法的某些部分提取到另一个方法中,而不会出现问题。实际上,拥有超过500行的类甚至是一个单一方法通常都是一个不好的迹象... - Daniel Hilgarth

0

您也可以点击要跳转的行,然后按下Ctrl + F10(到游标处执行)。它将直接跳转到该行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接