2009-07-10 50 views
10

私は実行中に監視する必要のあるVBアプリケーションを持っています。ウォッチウィンドウにいくつかの変数を追加しましたが、アプリケーションの実行中にウォッチウィンドウがグレー表示されています。私が変数値を見るために見つけた唯一の方法は、Debug - > Break Allを使うことですが、これはプログラムを停止させます。Visual Studioウォッチウィンドウがグレー表示されていますか?

私は他のIDEを使用しており、アクティブ変数を監視することができます。これはVSで可能ですか?

申し訳ありませんが、これは問題の場合です。

更新:私のアプリは実験室の機器と通信しており、データの送受信やエラーの検出がカウントされるとクリアされます。私はこれらのカウンターを見たいと思いますが、デバッグのためにこれを行うための画面を作りたくありません。私はこれがどのIDEでも基本的な機能だと思っただけです。

ショッキング:Visual Studioでは基本的な機能を提供していないようです。これが解釈された言語では不可能だと思う人にとっては、この思考実験を考慮してください。 [すべてをすぐにブレーク]を押してから[続行]を押すと、ウォッチウィンドウが更新されます。なぜVisual Studioはこれを単一のRefresh Watchコマンドとして実行できないのですか?また、この機能をユーザーが指定した時間に自動的に実行できるようにするのはなぜですか?デバッグの書き込みも、ログファイルも、プログラムの途中での停止やタイムアウトの作成もありません。私はちょうどあなたがこれをすることができないことにショックを受けました。そのブレークポイントを持っていないような少し。

+0

は、メモリ上のCPUサポートデータ範囲のブレークポイントを設定することでそれを行う、と行う「休憩を、時計を更新し、引き続き」可能性変数が更新されるたびに自動的に更新されます。 – ChrisW

答えて

5

アプリケーションが実行されている間に、ブレークポイントに達することなく、リアルタイムで - ウォッチウィンドウの変数の値を表示するIDEまたは開発環境が表示されますか?

Visual Studioではこれを提供していません。ウォッチウィンドウで値を更新したり、アイテムを編集するには、アプリケーションをブレークポイントまたはデバッグする必要があります。

+2

CodewarriorとChameleonの両方で、手動で変数の内容を更新したり、自動リフレッシュを設定したりして、リフレッシュ間隔を秒数またはミリ秒単位で指定できます。 私はこれがどのデバッガでも基本機能であると仮定しました。 – NormD

+0

私はCodewarriorを使用しているので、ああ、それは確かにしばらくありました。私はこれを認識していませんでした。そのため、どのIDEでこれを行えるのか尋ねられました。私は感心して、Visual Studioにも同様の機能があったら幸いです。情報のおかげで。 – marcc

5

"ブレーク"を実行してデバッガにプログラムを制御した後は、F10やF11などのファンクションキーを使用してコードを「ステップ」することができます。各「ステップ」の間、プログラムは1つまたは複数のステートメントを評価します。各ステップの後に(次のステップまで)停止し、停止している間は現在の状態を「見る」ことができます。

デバッガに侵入する他の方法(プログラムが停止している間にウォッチウィンドウを使用する方法)があります: 'ブレークポイント'を設定し、 'カーソルまで実行'機能を使用する方法があります。


もちろん

、積極的になど、受信またはいくつかの他のプロセス、ドライバにデータを送信しているプログラムを停止、この通信を停止し、タイムアウトやその他の問題が発生します。

これは本当です。

  • は、私は、変数の値を変更したときに、私は、ログファイルに新しい行を放出するように、私のコードにステートメントを追加します(表示:値はリアルタイムでウォッチ変更するには、私は、ログファイルを使用します

  • プログラムを実行しtail -fのようなユーティリティを使用して、ログファイルに追加され

  • ウォッチ新しい行が値を変更します)。

あなたは、あなたが言及した機能を備えたデバッガを見たことがありません。あなたが言及した機能に最も近いものは、あなたが言及した機能ではありません。How to: Set a Data Breakpoint (Native Only)です。

+0

もちろん、他のプロセスやドライバなどに積極的にデータを送受信しているプログラムを停止すると、この通信が停止し、タイムアウトやその他の問題が発生します。 – NormD

+1

ログファイルには多くの問題があります。単純にカウンタをインクリメントするのではなく、ログファイルに行を書き込むと、システムが停止する場合に、毎秒何千ものデータパケットを受信して​​いるとします。コンソールへの書き込みでさえ、カウンターのインクリメントと比較して非常に重量のある操作です。 – NormD

+0

別のコメントでは、「CodewarriorとChameleonでは、リフレッシュ間隔を秒単位またはミリ秒単位で指定できる」と述べました。ロギングに同じロジックを組み込むことができます(例:数秒ごとにログファイルに書き込みます。とにかく、あなたは今あなたの答えがあると思います。 – ChrisW

0

「デバッグ」ビルドにあり、Microsoftデバッガーがサービスとして実行され、ブロックされていないかどうかを確認してください。

+0

私はF5キーを押して、アプリケーションが実行されます。私はこれがデバッグビルドであると仮定します。なぜなら、私が変数をすべて破棄すると、変数はすべて値を持つからです。 Hoesはサービスとしてデバッグを実行しますか?これにより、プログラムが変化しているときに変数を見ることができますか? – NormD

2

Visual Studioでは、何をしようとしていますか。さまざまな検査ウィンドウ(時計、地元の住人、自動車など)は、機能するためには、デバッグプロセスが中断状態にあることに頼っています。

これは、私が過去に作業したデバッガの本質的なものです。少なくともコンパイルされた言語を使用するもの。

どのIDEを参照しているのですか?彼らは通訳言語を扱っていましたか?

0

これはあなたを助ける必要があります。理論的には、デバッガを@Shocked How to trace and debug in Visual C++ .NET and in Visual C++ 2005

+0

ポインタをありがとうございますが、記事にはC++にも当てはまると書かれており、VBについては言及していません。また、クイックレビューからは、変数をトレースするよりもはるかに多くのデバッグ書き込みステートメントが使用されるようです。 – NormD

関連する問題