在单步执行代码时,可以做些什么来跳过代码部分?当调试器跳转到属性获取和设置时,我发现这特别烦人。有办法避免这个吗?
答案 0 :(得分:9)
如果您想跳过整个方法,可以使用DebuggerStepThrough
属性标记它:
[DebuggerStepThrough]
public void SomeMethod()
{
// lots of code...
}
public int SomeProperty
{
[DebuggerStepThrough]
get { return ComplexLogicConvertedToMethod(); }
[DebuggerStepThrough]
set { this.quantity = value ; }
}
请注意,该属性会阻止调试器进入方法或属性,但您始终可以在该方法中放置断点并停在那里 1 。
该属性派上用场,特别是当你有这样的代码时:
DoSomething(obj.SomeProperty);
如果您想进入DoSomething
并按F11,您将 - 没有属性 - 首先进入SomeProperty
然后进入DoSomething
。但是,使用该属性,您最终会立即使用DoSomething
方法。
1 如果您想完全阻止用户在方法中放置断点,可以使用DebuggerHiddenAttribute
。
答案 1 :(得分:5)
有一个选项Step over properties and operators (Managed only)
或使用F10代替F11(使用默认键盘绑定)
答案 2 :(得分:1)
是的,有一个步骤(F10)功能,以及步入(F11)。
答案 3 :(得分:0)
您可以使用“run to cursor”一次断点。
答案 4 :(得分:0)
当您使用F10时,除非您在更深层次设置断点,否则代码只会跨越每个语句。我从来没有发现调试器未命中的行为与你建议的方式有关,请注意,我只使用VS2008。
答案 5 :(得分:0)
您可以在不想进入的任何方法/属性上设置属性DebuggerStepThroughAttribute。
你也可以使用“Step Over”而不是“Step Into”命令。
答案 6 :(得分:0)
将 DebuggerStepThrough 属性添加到您的媒体资源中:
[DebuggerStepThrough]
private static void DO() {
Console.WriteLine("test");
}