2011-03-11 59 views
3

是否有我可以在方法中指定的属性,以便在调试时调试器知道要在方法内部步进?我重写一个Databind()方法,并且当前调试器会自动执行。C#调试属性

+1

我还没有尝试过,但你有没有尝试过DebuggableAttribute? http://msdn.microsoft.com/en-us/library/system.diagnostics.debuggableattribute.aspx – 2011-03-11 20:40:58

+1

该类是否使用[DebuggerStepThrough]属性构建? – 48klocs 2011-03-11 21:07:22

回答

4

只需在您希望调试的方法内部放置一个断点。

如果在调试时没有命中断点,那就意味着该方法没有被调用 - 你确定你已经覆盖它正确吗?

+1

如果方法或类已附加DebuggerStepThrough,你确定会中断吗? – 2011-03-11 21:19:08

+0

@Rune FS - 当然,如果方法本身如此装饰,断点将不会被击中。然而,从阅读这个问题看,情况不太可能。如果OP已经重写了方法并用'DebuggerStepThrough'对其进行了修饰,那么他将回答他自己的问题。至于它被定义在被覆盖的方法上 - “DebuggerStepThrough”属性在其AttributeUsage中设置了“Inherited = false”,所以这也可以被排除。 – Oded 2011-03-11 21:32:03

+0

同意但仍然留下类的用法。 (但我同意你的看法,情况不太可能) – 2011-03-11 21:34:57

0

你使用什么版本的VS?在工具|选项“调试节点:启用只是我的代码(仅管理)”下 - 清除,“启用.NET框架源代码步进” - 设置可能有帮助。

您的覆盖是否设置了断点?

1

我同意Oded的回答,但另一种选择是使用Debugger.Break()。如果连接了调试器,这将导致您的代码每次遇到该行代码时都会中断。

2

感谢您的答案,没有人提出我在找什么。我知道我以前看过这个,所以我只是做了一些更多的搜索,然后再次找到它。 System.Diagnostics中有几个调试属性,我正在寻找的属性是DebuggerStepThrough()和DebuggerHidden()。

// Force the debugger to step through this code 
    [DebuggerStepThrough()] 
    public double GrandTotal 
    { 
     get 
     { 
      return (this.Subtotal + this.Tax + this.Shipping); 
     } 
    } 

而且......

// Force the debugger to skip step through 
    [DebuggerHidden()] 
    public double GrandTotal 
    { 
     get 
     { 
      return (this.Subtotal + this.Tax + this.Shipping); 
     } 
    } 

编辑:俄德你上发布有关此之上的评论,这其实就是我一直在寻找:)我会选择这个作为一个答案,但你没有不要把它作为答案吗?