自動プロパティのデバッグ


126

自動実装プロパティのセッター/ゲッターにブレークポイントを設定する方法はありますか?

int Counter { get; set; }

標準のプロパティに変更する以外は(この方法で行っていますが、そのためにはプロジェクト全体を変更して再コンパイルする必要があります)


2
どのIDEを使用していますか?Visual Studio?(対応するタグを質問に追加することをお勧めします。これは、実際にはC#言語自体よりも特定のIDEに関連しているためです。)
stakx-

5
.NETの世界での@stakxにはデフォルトのIDEがあります:)
Stilgar

1
@スティルガー、私はそれを知っている、結局私は自分でVSを使っている。しかし、「デフォルト」は、それが唯一のものであることも、誰もがそれを使用することを意味するものではありません。これはIDEの質問なので、ここで見ているIDEを知ることが重要です。したがって、私の以前のコメント。
stakx-2010年

4
@stakxは、.NET関連の質問に対するIDEの言及がない場合、VSであると見なされます。さらに、私はほとんど冗談
でした

回答:


220

Visual Studio 2008、2010、2012、2013を使用:

  1. ブレークポイントウィンドウに移動
  2. 新規->関数でブレーク…
  3. には、次のようgetに入力します。ClassName.get_Counter()

    には、次のようsetに入力します。ClassName.set_Counter(int)

ブレークポイントに到達すると、「利用可能なソースがありません」が表示されますが、呼び出しスタック内の呼び出し場所が表示されます。

私はこの解決策をMSDNで見つけました


ブライアント。ありがとう。自動プロパティを標準(フィールド付き)に変更する必要はもうありません。そして、これ以上再コンパイルする必要はありません:)
Marek Kwiendacz

9
これはデフォルトのコンストラクタでも機能します。使用ClassName.ctor
CALINダリエー

11
VS2015は、自動ゲッターとセッターにブレークポイントを設定 するだけでこれを修正しました:)
cateyes

1
ここでは機能しません。私は両方を試していないForm.set_HeightMainWindow.set_Height、どちらも働きました。
Hi-Angel

@ Hi-Angel、setterには型を含める必要があることに注意してください。そのため、Form.set_Height(int)のようなもの
Matt Smith

7

私があなただったら、一時的にプロパティを内部フィールドに基づく標準のプロパティにします...ブレークポイントを設定すれば、後で変更できます。



2

Visual Studio 2017の場合:

「設定された」単語にカーソルを合わせる->右クリック->ブレークポイント->ブレークポイントの挿入

前:

前

後:

後


0

プロパティを設定または取得している場所にブレークポイントを設定します。他の方法はありません。

あなたはこれをすべての参照の検索オプションで行うことができます

そして、値を格納するだけで、セッター部分にコードがないので、何をデバッグしますか?


3
はい、でも、例えば20か所で使用するとどうなりますか?そして、すべての新しいブレークポイントはデバッグプロセスを遅くします。または、プロパティへのアクセスがフレームワーク(シリアル化など)によって行われる場合はどうなりますか?
Marek Kwiendacz

1
条件付きブレークポイント。ブレークポイントをオンにして右クリックし、条件を割り当てます...
Phill
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.