2011-03-11 45 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); 
     } 
    } 

編輯:俄德你上發佈有關此之上的評論,這其實就是我一直在尋找:)我會選擇這個作爲一個答案,但你沒有不要把它作爲答案嗎?