.NET TIPS デバッグ・メッセージをコンソールに出力するには?デジタルアドバンテージ2004/04/02 |
![]() |
|
「TIPS:VS.NETでデバッグ・メッセージを出力するには?」で解説しているように、Debugクラス(System.Diagnostics名前空間)によるデバッグ・メッセージの出力は、Visual Studio .NETの使用時にはVS.NETの[出力]ウィンドウに出力される。
しかし、Visual Studio .NETではなくコマンド・プロンプトでコンソール・アプリケーションのプログラミングを行っている場合には、Debugクラスによる出力を表示することができない。このような場合には、Debugクラスに「リスナ」を追加することにより、コンソール(標準出力)やファイルなどにもメッセージを出力することができる。
デバッグ・メッセージを受け取るリスナ
Debugクラスで使用されるリスナ(Listener)とは、Debugクラスからデバッグ・メッセージを受け取って、それをコンソール(標準出力)やファイルなどに出力するオブジェクトのことである。
具体的には、リスナはTraceListenerクラス(System.Diagnostics名前空間)を継承したクラスのオブジェクトであり、クラス・ライブラリには、受け取ったメッセージをファイルやコンソールに書き込むTextWriterTraceListenerクラス、Windowsのイベント・ログに書き込むEventLogTraceListenerクラスなどが用意されている。
一方、DebugクラスはListenersプロパティのコレクションにより、複数のリスナを登録することができる。そして、WriteメソッドやWriteLineメソッドによりメッセージが出力される場合には、Listenersプロパティに登録されているすべてのリスナに対して、そのメッセージが出力される仕組みとなっている。
デバッグ・メッセージをコンソールに出力
コンソールにデバッグ・メッセージを出力するには、前出のTextWriterTraceListenerクラスのコンストラクタで標準出力のストリームを指定してリスナを生成し、それをDebugクラスのListenersプロパティに追加すればよい(この設定はプログラムの最初に1度だけ行えばよい)。これを行っているサンプル・プログラムを次に示す。
|
|
デバッグ・メッセージを出力するC#のコンソール・アプリケーション(debugoncon.cs) | |
|
|
デバッグ・メッセージを出力するVB.NETのコンソール・アプリケーション(debugoncon.vb) | |
Visual Studio .NETのDebugビルドによりこのプログラムを実行する場合には、デバッグ・メッセージはコンソールに出力されるが(同時に[出力]ウィンドウにも出力される)、コマンド・プロンプトでコンパイルする場合には、「DEBUGシンボル」を定義しておく必要がある。これには、リストの最後のコメントで記述しているように、コンパイラの/defineオプション(省略形は/d)により「DEBUG」を定義しなければならない。あるいは、コンパイル・オプションの代わりに、C#では「#define DEBUG」、VB.NETでは「#CONST DEBUG=1」の1文をプログラムの先頭に追加してもよい。DEBUGシンボルが定義されていなければ、Debugクラスのメソッド呼び出しはコンパイラによって取り除かれるため、デバッグ・メッセージは出力されない。
コンソールではなく、特定のファイルにデバッグ・メッセージを出力したい場合には、ファイルに対するストリームからTextWriterTraceListenerオブジェクトを生成すればよい。しかし、この場合にはもっと簡単な方法がある。これについては「TIPS:デバッグ・メッセージをファイルに出力するには?」で解説している。
カテゴリ:クラス・ライブラリ 処理対象:デバッグ&トレース 使用ライブラリ:Debugクラス(System.Diagnostics名前空間) 使用ライブラリ:TraceListenerクラス(System.Diagnostics名前空間) 使用ライブラリ:TextWriterTraceListenerクラス(System.Diagnostics名前空間) 関連TIPS:VS.NETでデバッグ・メッセージを出力するには? 関連TIPS:デバッグ・メッセージをファイルに出力するには? |
|
更新履歴 | |
|
![]() |
「.NET TIPS」 |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
![]() |
|
|
|
![]() |
- - PR -