C#をデバッグするとき、変数の値がいつ変更されるかを知り、プログラムの状態を調査したいことがよくあります。
現在、私はこのようにしています:
ただし、必要なF10の数は煩わしいものです。
確かにこれは自動化されていると思いました。しかし、この機能が私のMicrosoft Visual C#Expressに見つからないので、驚いています。結局のところ、ウォッチリストdoesは、変更された値を明るい赤で自動的に強調表示します。
私は何かが足りないのですか?
Expressエディションの簡単なトリック:
private string myValue;
public string MyValue
{
set
{
if (this.myValue != value) Debugger.Break();
this.myValue = value;
}
}
条件付きブレークポイント が必要ですが、Visual StudioExpressでは使用できないようです。
Visual Studio(非Express)では、ウォッチ値に等しい式を使用して条件付きブレークポイントを作成し、ブレークポイント条件として「変更済み」を作成する方法があります。
ランタイム条件に基づいてDebugger.Breakを使用するか、ブレークポイントを右クリックして、条件付きブレークを選択します->変更されました
編集:Expressでこれについて知らない
変数の変更を正確にキャッチするのではなく、あるブレークポイントで変数の変更をキャッチする場合は、ブレークポイントを設定して右クリックし、[条件]を選択します。変数名がXで、現在の値がAであるとします。条件フィールドに「X!= A」と入力します。
これで、ブレークポイントは、XがA以外の値に変更された後にのみヒットします。
これが私がVisualStudioでそれを行う方法です。 F9キーを押すか、左端の余白をクリックして、ブレークポイントを設定します。次に、表示される赤い点を右クリックして、[条件]コマンドを選択します。そこには他のオプションもあります。
ただし、これはVisual StudioExpressではサポートされていない場合があります。
条件付きブレークポイントを使用できます
this を参照してください
変更をチェックし、そのifステートメント内でブレークポイントが発生するifステートメントを記述して、最初にブレークしてから、[再開]をクリックすると、このブレークポイントに到達するまで続行されます。