24

顯然,VS 2008不允許在auto屬性的setter上設置斷點。無法在自動屬性設置器上設置斷點?爲什麼?

I.e.如果我定義了一個自動屬性是這樣的:

public int CurrentFramesize 
    { 
     get; 
     protected set; 
    } 

,然後嘗試設置一個斷點上的setter線,整個汽車屬性變成斷點紅色。

這對正常的屬性很好,所以任何想法爲什麼自動屬性得到這種特殊(限制)治療?它們不僅僅是語法糖對隱藏背景場的正常屬性嗎?

+0

你是正確的實施。我注意到了同樣的事情。 – 2010-04-21 12:02:16

+4

微軟的迴應http://connect.microsoft.com/VisualStudio/feedback/details/408762/unable-to-set-breakpoint-to-c-automatic-property – 2010-04-21 13:10:32

+1

我很盼望該功能將使其進入VS2010 :( – bitbonk 2010-07-29 09:34:29

回答

28

使用Visual Studio 2008,2010,2012:

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

    輸入:ClassName.set_CurrentFramesize(int)

當斷點被擊中時,你會得到一個「No Source Available」,但你會得到調用堆棧中的調用位置。

我在這裏找到這個解決方案:http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/b1dd0dc3-e9c1-402a-9c79-a5abf7f7286a

參見:Debugging automatic properties

+3

不知何故,我錯過了你的答案兩年半+1。 – 2013-11-27 15:41:03

-2

不,你不能在他們身上設置一個斷點,但你會檢查什麼?用於存儲自動屬性的變量僅在運行時分配,因此調試器無法顯示/訪問變量。

+11

您可能希望檢查*何時分配給它,如果它似乎從「某處」得到錯誤的值 – 2010-04-21 12:11:34

+0

@Hans Kesting:Spot on。CLR調試器沒有*數據*斷點,所以如果這將被支持,這將是下一個最好的事情。 – 2010-04-21 12:50:50

2

簡短的回答是:這個 錯誤 功能在VS2008的裁剪房間結束了。

(長answer - 帽尖@jdk)

所有我們得到的是,它被認爲是vNext一個模糊的承諾。