2010-12-10 66 views
113

有沒有什麼辦法可以在自動實現的屬性中設置setter/getter的斷點?調試自動屬性

int Counter { get; set; } 

除了將其更改爲標準的屬性(我做它通過這種方式,但要做到這一點我必須要改變和重新編譯整個項目)

+2

與Google合作的什麼IDE?視覺工作室? (我建議你爲你的問題添加一個相應的標籤,因爲這實際上更多地涉及到特定IDE而不是C#語言本身。) – stakx 2010-12-10 11:23:26

+4

@stakx在.NET世界中,我們有一個默認的IDE :) – Stilgar 2010-12-10 11:35:21

+1

@Stilgar,I我意識到這一點,畢竟我自己也在使用VS。但「默認」並不意味着它是唯一的,也不是說每個人都使用它。由於這是一個IDE問題,因此瞭解我們在這裏查看哪個IDE非常重要。因此我以前的評論。 – stakx 2010-12-10 12:16:15

回答

197

使用Visual Studio 2008,2010,2012,2013:

  1. 轉到斷點窗口
  2. 新建 - >歇在功能...
  3. 對於get,類型:ClassName.get_Counter()

    對於set,請鍵入:ClassName.set_Counter(int)

當遇到斷點時,您將得到一個「無源代碼」,但您會在調用堆棧中獲得調用位置。

我發現這個解決方案here on MSDN

+0

Briliant。謝謝。我不需要將自動屬性更改爲標準(帶有字段)。並且不需要重新編譯:) – 2011-07-16 22:24:53

+4

我希望我能對此讚賞兩次! – 2012-07-25 19:44:14

+9

這也適用於默認的構造函數。使用'ClassName.ctor' – 2013-04-04 13:30:46

0

設置斷點如果要設置屬性或獲取財產,沒有其他辦法。

你可以做到這一點通過查找所有引用選項

而且由於它是唯一的存儲值,並沒有在二傳手一部分,所以你怎麼調試任何代碼?

+2

是的,但是當你在20個地方使用它時呢?而且每個新的斷點都會減慢調試過程。或者,如果訪問財產是由框架完成的(例如序列化)? – 2010-12-10 11:04:03

+1

有條件的中斷點。打開中斷點,右鍵單擊它併爲其分配條件... – Phill 2010-12-10 11:45:38

6

如果我是你,我會暫時讓這個屬性成爲一個標準支持的屬性......設置你的斷點,然後你可以改回來。