プログラム

C#プログラミングレッスン

C#での .NETプログラミングを易しく丁寧に解説するメールマガジンです。「C#プログラミング・レッスン」で、.NETプログラミングをマスターしましょう。

全て表示する >

【C#プログラミングレッスン】 No.126-Debug(2)

2007/05/08

┏━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━┳━┳━┓
┃☆┃ C#プログラミングレッスン                         ┃_┃□┃×┃
┣━┻━━━━━━━━━━━━━━━━━━━━━━━━━┻━┻━┻━┫
┃ Debug(2)                                                   No.126┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

今回は、「Debug 情報をテキストファイルに出力する」方法について説明しま
す。

■──────────────────────────────────
■ 構成ファイルの書き方

前回は、Visual Studio 2005 の「デバッグで開始」をした際には、IDE の「出
力」ウィンドウに Debug で出力した内容が表示されると説明しましたが、デバ
ッグの内容をファイルに書き出したい場合にはどうすればよいのでしょうか?
そのような場合には、構成ファイルで出力先を指定することになります。
構成ファイルの例を示します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<trace autoflush="false" indentsize="4">
<listeners>
<add name="myListener" 
                     type="System.Diagnostics.TextWriterTraceListener" 
                     initializeData="DebugLog.txt" />
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>
</configuration>


<trace>要素
  autoflush 属性で、書き込むたびに出力バッファを自動的にフラッシュする
  かどうかを指定できます。また、indentsize 属性で、インデントの幅を指定
  できます。

<add name ...>要素
  TextWriterTraceListener クラスを使って、DebugLog.txt ファイルにその内
  容を出力させる設定をしています。

<remove name="Default" />要素
  標準で組み込まれている DefaultTraceListener を取り除いています。この
  行がないと、Visual Studio 2005 でデバッグすると、「出力」ウィンドウと、
  DebugLog.txt に同じ内容が出力されることになります。


■──────────────────────────────────
■ プログラムの実行

再度、前回のコードを示します。このプログラムを、上記構成ファイルととも
に実行してみてください。
Visual Studio 2005 では、App.config ファイルを、プロジェクトに追加して
ビルドすれば、OK です。

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace Debug2 {
    class Program {
        static void Main(string[] args) {
            Debug.WriteLine("Start Method");
            Debug.IndentSize = 4;
            Debug.Indent();
            Debug.Write("Debug.Write");
            Debug.WriteLine("は、改行しません。");
            for ( int i = 0; i < 4; i++ ) {
                Debug.WriteIf(i % 2 == 1, i);
                Debug.WriteLineIf(i % 2 == 1, " は、奇数です.");
            }
            System.Version v = new Version(1,2,3,4);
            Debug.WriteLine(v);
            Debug.Unindent();
            Debug.WriteLine("End Method");
            Debug.Flush();
            Console.ReadLine();
        }
    }
}

Debug モードでコンパイルした場合、DebugLog.txt が作成されます。一方、
Release モードでコンパイルした場合は、DebugLog.txt は作成されません。
※ Debugの有効無効は、コンパイル時の /d:DEBUG フラグで設定が可能です。

このことからわかるように、Debug クラスによる出力は、あくまでも開発中に
のみ利用される機能という位置づけになっています。

次回は、Debugクラスととてもよく似ている Traceクラスについて説明します。


┌─┬─────────────────────────┬─┬─┬─┐
│☆│ C#プログラミングレッスン  (ぼぼ週刊)            │_│□│×│
├─┴─────────────────────────┴─┴─┴─┤
│ Published by Gushwell.                                           │
│ Copyright (C) 2004-2007 Gushwell All rights reserved.            │
│ Microsoft MVP Visual Developer - Visual C#(Apr 2005 - Mar 2008)  │
│-------------------- Gushwell's Page ---------------------------- │
│ 窓際プログラマーの独り言  :http://blog.livedoor.jp/gushwell/    │
│ 窓際プログラマーの読書三昧:http://gushwell.jugem.jp/            │
│ C#デザインパターン :                                             │
│  『増補改訂版Java言語で学ぶデザインパターン入門 / 結城 浩(著)』  │
│   のサンプルコードをC#に移植したものを掲載しています。           │
│   移植後のコードの公開は、結城氏の了解を得ています。             │
│   http://blog.livedoor.jp/gushwell/archives/50333227.html        │
└─────────────────────────────────┘

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    【ポコカ】がおサイフ携帯の新しい利用方法を提案します。

  お店のクーポン・会員カード・スタンプカードをケータイにひとまとめ

         ☆ おサイフケータイとお店をつなげるポータルサイト ☆
           Pococa!(R)ポコカ URL: http://www.pococa.com/ct/
---------------------------------------------------------------------

規約に同意してこのメルマガに登録/解除する

メルマガ情報

創刊日:2004-08-12  
最終発行日:  
発行周期:ほぼ週刊  
Score!: 非表示   

コメント一覧コメントを書く

この記事にコメントを書く

上の画像で表示されている文字を半角英数で入力してください。

※コメントの内容はこのページに公開されます。発行者さんだけが閲覧できるものではありません。 コメントの投稿時は投稿者規約への同意が必要です。

  • 名無しさん2007/05/09

    あまり実用性はなさそうですが、勉強になりました。どこかで使える場面がでてくるかもしれません。