.NET TIPS

トレースポイントを使ってトレース情報を出力するには?[VS 2005、VS 2008]

デジタルアドバンテージ 遠藤 孝信
2008/09/18

 Visual Studio 2005や2008では、任意のコード行に「トレースポイント」を設定し、プログラム実行時にトレースポイントにおけるトレース情報を[出力]ウィンドウに表示させることができる。

 トレースポイントはブレークポイントの一種であるが、ブレークポイントとは異なり、その個所でプログラムの実行は中断されず、あらかじめ指定された内容のメッセージを表示する。本稿ではトレースポイントの基本的な使い方を紹介する。

トレースポイントの設定方法

 トレースポイントの設定は簡単で、まずトレース情報を出力させたいコード行でマウスを右クリックし、コンテキスト・メニューから[ブレークポイント]−[トレースポイントの挿入]を選択する。


図1 トレースポイントの挿入
トレース情報を出力させたい行でマウスを右クリックし、コンテキスト・メニューから[ブレークポイント]−[トレースポイントの挿入]を選択する。画面は、Windowsフォーム・アプリケーションのプロジェクトで、フォームに配置したボタンのイベント・ハンドラの最後の行にトレースポイントを設定しているところ。

 これにより、次のようなダイアログが開く(図2)。この画面はダイアログの初期の状態である。


図2 トレースポイント挿入時に開くダイアログ
デフォルトで、表示するメッセージが設定され、「続けて実行する」がオンになっている。

 取りあえずこのまま[OK]ボタンをクリックしてダイアログを閉じると、エディタ画面では、トレースポイントが設定された行に赤いひし形のマークが表示される(図3)。


図3 トレースポイントが設定された行を示す赤いひし形マーク

 以上の設定で、ひし形マークの付いた行が実行されるたびに、[出力]ウィンドウにメッセージが表示される。上記の設定の場合には、[出力]ウィンドウの表示は例えば次のようになる。


図4 [出力]ウィンドウの表示例
赤枠で囲んだ3行がトレースポイントにより出力されたメッセージ。ここではアプリケーションのボタンを3回クリックした(=トレースポイントを設定したメソッドが3回実行された)。

トレースポイントにより表示されるメッセージ

 上記のダイアログ(図2)で、デフォルトで設定されているメッセージは以下のような内容である。

Function: $FUNCTION, Thread: $TID $TNAME
トレースポイントにデフォルトで設定されているメッセージ

 これにより出力されるメッセージ(トレース情報)は、次のようなものになる。これはトレースポイントが設定されていたメソッドの名前($FUNCTION)と、実行時のスレッドID($TID)およびスレッド名($TNAME)を表示している。

Function: WindowsApplication1.Form1.Button1_Click(Object, System.EventArgs), Thread: 0x64C メインスレッド
上記のメッセージ設定による出力

 メッセージ内で利用可能なキーワード($FUNCTIONや$TID)は、図2のダイアログで示されているものに加えて、CPUティック(チック)数を示す「$TICK」、ファイル内での位置を示す「$FILEPOS」が使用できる。

 また、図2のダイアログに書いてあるように、トレースポイントが実行された時点の変数の値を出力することも可能だ。例えば、以下のようなメッセージを設定した場合、

変数eの内容は {e} です。
変数の値を表示するためのメッセージ設定例

実際の出力は次のようになる。

変数eの内容は{X = 37 Y = 10 Button = Left {1048576}} です。
上記のメッセージ設定による出力
この例では、変数eはボタンのClickイベント・ハンドラに渡されたEventArgsオブジェクトである。

 従来このようなトレース情報を得るには、Traceクラス(System.Diagnostics名前空間)などをコード中に埋め込んで出力させる必要があったが、トレースポイントを使えばコードにまったく手を加えることなくそれが可能になる。End of Article

カテゴリ:Visual Studio 2005 処理対象:IDE
カテゴリ:Visual Studio 2008 処理対象:IDE
使用ライブラリ:Traceクラス(System.Diagnostics名前空間)

この記事と関連性の高い別の.NET TIPS
[ASP.NET]ページのトレース情報を出力するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間