.NET TIPS

VS.NETでデバッグ・メッセージを出力するには?

デジタルアドバンテージ
2004/03/26

 プログラムの手軽なデバッグ方法の1つとして、プログラムの途中にメッセージを出力するメソッド(関数)呼び出しを埋め込むという方法はよく用いられる。

 メッセージを出力する標準的なメソッドとしては、例えば、Windowsアプリケーションならメッセージ・ボックスを表示するMessageBox.Showメソッドや、コンソール(コマンド・プロンプト)に文字を出力するSystem.WriteLineメソッド、ASP.NETのWebアプリケーションであればResponse.Writeメソッドなどがある。しかし、これらのメソッドをデバッグ用途で使用した場合、製品のリリース時にはそれらを取り除くか、あらかじめデバッグ・メッセージが出力されないようにするための何らかの記述を追加しておかなければならない。

デバッグ・メッセージ出力のためのDebugクラス

 .NET Frameworkのクラス・ライブラリでは、デバッグ・メッセージ出力のためにDebugクラス(System.Diagnostics名前空間)が用意されている。このクラスには、指定した文字列を出力するためのWriteメソッドやWriteLineメソッド(改行コード付き出力)などが用意されているが、これらのメソッドの呼び出しはデバッグ時にのみ有効となるという点がこのクラスの特徴だ。

 Visual Studio .NET(以降VS.NET)を使用している場合には、Debugビルド時にのみDebugクラスのメソッド呼び出しが有効となり、Releaseビルド時には、それらのメソッドの呼び出しはコンパイラによって自動的に取り除かれる。つまり、デバッグ・メッセージ出力のためのコードを残したまま、ビルドの種類を変更するだけで、デバッグ・メッセージ出力のオン/オフを切り替えることができるということだ。

 次の画面は、DebugクラスのWriteLineメソッドを使用したコードをDebugビルドで実行しているところである。この画面で分かるように、Debugクラスによるデバッグ・メッセージの出力は、VS.NETではデフォルトで[出力]ウィンドウに表示される。画面はWindowsアプリケーションの場合であるが、Debugクラスを使用したこの機能は、Webアプリケーションであってもまったく同様に利用できる。

Debugクラスの記述例と出力されたデバッグ・メッセージ
VS.NETでは、Debug.WriteLineメソッドによるデバッグ・メッセージの出力は、デフォルトで[出力]ウィンドウに表示される。これが行われるのはDebugビルド時のみで、Releaseビルド時には、Debugクラスのメソッドを呼び出しているコードは実行ファイルに含まれない。
  ここでDebugビルドとReleaseビルドを切り替える(メニューの[ビルド]−[構成マネージャ]からも変更可)。
  [出力]ウィンドウに表示されたデバッグ・メッセージ。途中のメッセージはDebug.Indentメソッドの呼び出しによりインデントされて少し右に寄って表示されている。

 上記画面内のコードの51行目では、Debug.Indentメソッドを呼び出しているが、これは、それ以降のデバッグ・メッセージ出力をインデント(一段分だけ字下げ)するためのものだ。これにより、続くForループ内のDebug.WriteLineメソッドによるメッセージ出力は少し右寄りに表示され、見やすくなっている。インデントを一段分だけ元に戻すには、56行目のようにDebug.Unindentメソッドを使用すればよい。

 ちなみに、VS.NETでDebugクラスによるデバッグ・メッセージが[出力]ウィンドウに表示されるのは、Debugクラスのデフォルト設定でメッセージの出力先が「デバッガ」となっているためだ(もちろんVS.NETはデバッガの機能を含んでいる)。Debugクラスではメッセージの出力先を追加する機能も持っており、例えば、指定したファイルにデバッグ・メッセージを出力することもできる。これについては「TIPS:デバッグ・メッセージをコンソールに出力するには?」で触れている。End of Article

カテゴリ:クラス・ライブラリ 処理対象:デバッグ&トレース
使用ライブラリ:Debugクラス(System.Diagnostics名前空間)
関連TIPS:デバッグ・メッセージをコンソールに出力するには?

この記事と関連性の高い別の.NET TIPS
デバッグ・メッセージをコンソールに出力するには?
デバッグ・メッセージをファイルに出力するには?
LINQ to SQLのログ出力をVisual Studioの[出力]ウィンドウに出力するには?
using文による名前空間の指定を自動的に記述するには?
コンソール・アプリケーションの出力を取り込むには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

更新履歴
【2004/04/08】 関連TIPSとして「TIPS:デバッグ・メッセージをコンソールに出力するには?」についての記述を追加しました。
 
「.NET TIPS」

@IT Special

- PR -

TechTargetジャパン

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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH