2016-07-14 19 views
-1

私は、変数「」はクラスレベルで宣言した形winformsアプリケーション全体でウォッチウィンドウの変数を監視するにはどうすればよいですか?

enter image description here

を持っています。

public partial class Form1 : Form 
    { 
     int a; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     .......... 
    } 

私は「」ウォッチウィンドウで、これはidealyできるだけ早くする必要があります私が表示したいボタンのクリックイベント、ボタンひとつずつ「A」、他の減分に「」

を持っていますフォームは、プログラムが終了するだけではロードされませんが、とにかく、 'a'を表示するためにどこかにブレークポイントを置く必要があるようですので、フォームのロード時にブレークポイントを設定し、 '再生' a '。

「続ける」をクリックすると、ボタンをクリックすると「a」の値が表示されます。

しかし、それはブレークポイントでのみ行うようです。一度ボタンを押すと、ブレークポイントを追加しない限り、値が表示されません。

enter image description here

enter image description here

は、私は本当にそれがプログラムであるところはどこでも、変数の値を参照するだけでブレークポイントを設定する必要がありますする必要はありません。また、GUIをナビゲートして変数の値を確認しようとしているときに、自分のコードにジャンプする必要はありません。

現時点でできることは、最初のフォームロードの中括弧と値に影響を与える可能性のある関連イベントの中括弧にブレークポイントが置かれているようです。しかし、それをする必要はありませんように思えるし、それはコードにジャンプし続けるためにGUIの周りをクリックしようとすると、わずかな気晴らしです。もっと複雑なGUIでは、私の変数に関して一貫性のない状態を作り出すことができるかどうかをちょっと見てみたいと思うかもしれません。

私は、特定のポイントではなく、プログラム全体で変数を監視したいと考えています。私はそうするオプションがない、またはおそらくそこにあるが、私はそれを見ることができない場合、少し驚いている。

+0

私は手動で 'System.Diagnostics.Debug.WriteLine'を呼び出す以外の何かを認識していません。 –

+0

あなたが何を求めているかははっきりしない。デバッガウォッチウィンドウは、プロセスが一時停止しているときのみデータを表示します。デバッグ出力に値を書き込むことをお勧めする人もいます。しかし、それは本当にあなたが望むものですか?プログラムとやりとりして変数の値を常に監視できるようにしたいのであれば、それをプログラムに組み込む必要があります。メインウィンドウのどこかに値を表示するか、プログラム自体に値を表示する別の "デバッグコンソール"ウィンドウを作成します。どちらの方法でも、これらの機能をオプションにすることも、デバッグビルドでのみ行うこともできます。 –

+0

@PeterDunihoは自分のプログラムを持っているので、テキストボックスのメッセージボックスや少し上のように見えます。また、テキストボックスに値を入力するか、値を表示するボタン。私は、ビジュアルスタジオがもう少し進んでいるかもしれないと思っていて、そのデバッグ機能にその種の機能があると思っていました。リストの場合、ウォッチウィンドウはそれをとてもうまく表示しますが、どこにも表示されません。私は簡単に最初のカウントと任意の要素を表示するデバッグのためのかなりのコントロールが必要になります。 – barlop

答えて

0

私はあなたが出力ウィンドウにそれを記述する必要がありますと思う:

a++; 
System.Diagnostics.Debug.WriteLine(a); 

それは最適ではないのですが、それはブレークポイントよりはましです。

+0

変数がどこで変更されているのかを知る必要がありますが、変更が必要なすべての場所を知っておく必要がありますが、ちょっと面倒です – barlop

+0

@barlop:上記の他のコメントを参照してください。このシナリオでは、表示しようとしている値が何であれ、その値が変更されたときに常に呼び出される単一のメソッド(スタンドアロンまたはプロパティーセッター)があることを確認する必要があります。こうすることで、デバッグの出力はコード全体で変更するのではなく、その1つの場所に分離されます。 –

+0

@PeterDunihoもちろんもちろん、あなたはまだそれが変更されるあらゆる場所でメソッドを呼び出さなければならない、それは私があなたに返信していたと思うあなたの上の私のコメントで言いました。 – barlop

関連する問題