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

» 2004年03月26日 05時00分 公開

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 プログラムの手軽なデバッグ方法の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クラスのメソッドを呼び出しているコードは実行ファイルに含まれない。
 (1)ここでDebugビルドとReleaseビルドを切り替える(メニューの[ビルド]−[構成マネージャ]からも変更可)。
 (2)[出力]ウィンドウに表示されたデバッグ・メッセージ。途中のメッセージはDebug.Indentメソッドの呼び出しによりインデントされて少し右に寄って表示されている。

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

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

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

「.NET TIPS」のインデックス

.NET TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。