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