web-dev-qa-db-ja.com

デバッグ時に「この変数が変更されるまで実行」するにはどうすればよいですか?

C#をデバッグするとき、変数の値がいつ変更されるかを知り、プログラムの状態を調査したいことがよくあります。

現在、私はこのようにしています:

  1. ウォッチリスト問題のある変数。
  2. 値の変化が表示されるまで、物理的にF10(ステップオーバーのショートカット)をスパムします。

ただし、必要なF10の数は煩わしいものです。

確かにこれは自動化されていると思いました。しかし、この機能が私のMicrosoft Visual C#Expressに見つからないので、驚いています。結局のところ、ウォッチリストdoesは、変更された値を明るい赤で自動的に強調表示します。

私は何かが足りないのですか?

21
Anko

Expressエディションの簡単なトリック:

private string myValue;
public string MyValue
{
  set
  {
    if (this.myValue != value) Debugger.Break();
    this.myValue = value;
  }
}
22
Teoman Soygul

条件付きブレークポイント が必要ですが、Visual StudioExpressでは使用できないようです。

Visual Studio(非Express)では、ウォッチ値に等しい式を使用して条件付きブレークポイントを作成し、ブレークポイント条件として「変更済み」を作成する方法があります。

6
Ben Hoffstein
  1. コードを一時停止するブレークポイントを設定します
  2. [ブレークポイント]ウィンドウを開きます([デバッグ]-> [ウィンドウ]-> [ブレークポイント])
  3. ブレークポイントを右クリックして、[条件...]を選択します。
  4. 条件を変数名に設定し、[変更済み]ラジオボタンを選択します。
  5. [OK]をクリックして、通常どおりにデバッグします:)
1
Darth Android

ランタイム条件に基づいてDebugger.Breakを使用するか、ブレークポイントを右クリックして、条件付きブレークを選択します->変更されました

編集:Expressでこれについて知らない

0
Denis Biondic

変数の変更を正確にキャッチするのではなく、あるブレークポイントで変数の変更をキャッチする場合は、ブレークポイントを設定して右クリックし、[条件]を選択します。変数名がXで、現在の値がAであるとします。条件フィールドに「X!= A」と入力します。

これで、ブレークポイントは、XがA以外の値に変更された後にのみヒットします。

0

これが私がVisualStudioでそれを行う方法です。 F9キーを押すか、左端の余白をクリックして、ブレークポイントを設定します。次に、表示される赤い点を右クリックして、[条件]コマンドを選択します。そこには他のオプションもあります。

ただし、これはVisual StudioExpressではサポートされていない場合があります。

0
Jonathan Wood

条件付きブレークポイントを使用できます

this を参照してください

0
Illuminati

変更をチェックし、そのifステートメント内でブレークポイントが発生するifステートメントを記述して、最初にブレークしてから、[再開]をクリックすると、このブレークポイントに到達するまで続行されます。

0
Remm