この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
プログラムの手軽なデバッグ方法の1つとして、プログラムの途中にメッセージを出力するメソッド(関数)呼び出しを埋め込むという方法はよく用いられる。
メッセージを出力する標準的なメソッドとしては、例えば、Windowsアプリケーションならメッセージ・ボックスを表示するMessageBox.Showメソッドや、コンソール(コマンド・プロンプト)に文字を出力するSystem.WriteLineメソッド、ASP.NETのWebアプリケーションであればResponse.Writeメソッドなどがある。しかし、これらのメソッドをデバッグ用途で使用した場合、製品のリリース時にはそれらを取り除くか、あらかじめデバッグ・メッセージが出力されないようにするための何らかの記述を追加しておかなければならない。
.NET Frameworkのクラス・ライブラリでは、デバッグ・メッセージ出力のためにDebugクラス(System.Diagnostics名前空間)が用意されている。このクラスには、指定した文字列を出力するためのWriteメソッドやWriteLineメソッド(改行コード付き出力)などが用意されているが、これらのメソッドの呼び出しはデバッグ時にのみ有効となるという点がこのクラスの特徴だ。
Visual Studio .NET(以降VS.NET)を使用している場合には、Debugビルド時にのみDebugクラスのメソッド呼び出しが有効となり、Releaseビルド時には、それらのメソッドの呼び出しはコンパイラによって自動的に取り除かれる。つまり、デバッグ・メッセージ出力のためのコードを残したまま、ビルドの種類を変更するだけで、デバッグ・メッセージ出力のオン/オフを切り替えることができるということだ。
次の画面は、DebugクラスのWriteLineメソッドを使用したコードをDebugビルドで実行しているところである。この画面で分かるように、Debugクラスによるデバッグ・メッセージの出力は、VS.NETではデフォルトで[出力]ウィンドウに表示される。画面はWindowsアプリケーションの場合であるが、Debugクラスを使用したこの機能は、Webアプリケーションであってもまったく同様に利用できる。
上記画面内のコードの51行目では、Debug.Indentメソッドを呼び出しているが、これは、それ以降のデバッグ・メッセージ出力をインデント(一段分だけ字下げ)するためのものだ。これにより、続くForループ内のDebug.WriteLineメソッドによるメッセージ出力は少し右寄りに表示され、見やすくなっている。インデントを一段分だけ元に戻すには、56行目のようにDebug.Unindentメソッドを使用すればよい。
ちなみに、VS.NETでDebugクラスによるデバッグ・メッセージが[出力]ウィンドウに表示されるのは、Debugクラスのデフォルト設定でメッセージの出力先が「デバッガ」となっているためだ(もちろんVS.NETはデバッガの機能を含んでいる)。Debugクラスではメッセージの出力先を追加する機能も持っており、例えば、指定したファイルにデバッグ・メッセージを出力することもできる。これについては「TIPS:デバッグ・メッセージをコンソールに出力するには?」で触れている。
カテゴリ:クラス・ライブラリ 処理対象:デバッグ&トレース
使用ライブラリ:Debugクラス(System.Diagnostics名前空間)
関連TIPS:デバッグ・メッセージをコンソールに出力するには?
Copyright© Digital Advantage Corp. All Rights Reserved.