2014年06月25日

変数の中身を確認 Debug,Trace,BreakPoint

標準出力への表示
とりえあず表示させることは可能。
問題は本来は不要なこの出力処理が常に実行されてしまうこと。

static void SampleMethod(string text)
{
    Console.WriteLine("Console.WriteLine : " + text);
}

Debug/Traceの利用
System.Diagnostics名前空間にあるDebug,Traceクラスを使用する。
コンパイルオプションの指定有無によりメソッドの実行有無を指定できる。
プロジェクトのプロパティより、ビルドタブに「DEBUG定数の定義」「TRACE定数の定義」項目がある。
デフォルト設定では出力ウィンドウに出力されるが、リスナを登録することによりファイルなど出力先の追加変更も可能。
リスナの登録はコードからもアプリケーション構成ファイルからも可能。

using System.Diagnostics;

static void SampleMethod(string text)
{
    Debug.WriteLine("Debug.WriteLine : " + text);

    Trace.WriteLine("Trace.WriteLine : " + text);
}

ブレイクポイントの利用
ソースコード上に設定し、プログラムが設定箇所に到達した時点で処理が中断する。その状態で変数を選択するとその値を確認することができる。
ブレイクポイントを設定するには確認したいコード上でコンテクストメニューを表示し「ブレークポイント」「ブレークポイントの挿入」を選択する。
または、コードエディタの左端のスペースをクリックする。

ブレイク時の動作のカスタマイズ
ブレイクポイント設定箇所にはコードエディタの左端に丸印が表示される。そこでコンテクストメニューを表示し「ヒット時」を選択し表示内容を設定すると処理を止めることなく値の確認が可能となる。
非同期処理やフォーカス関連処理の確認などで有効である。
また、同コンテクストメニューには処理を中断させるための条件の設定なども可能である。


表示のカスタマイズ
ブレイク中に変数にカーソルをあてたときに表示される文字列はToStringメソッドの実行結果である。
これをオーバーライドすれば表示文字列を変更できるが、デバッグ時にだけ変更させるには以下のように属性により設定する。

[DebuggerDisplay("Value : {Value}")]
class Data
{
    public string Value { set; get; }

//    public override string ToString()
//    {
//        return "Value is " + Value;
//    }
}
posted by RR at 04:45 | Comment(0) | デバッグ | このブログの読者になる | 更新情報をチェックする

2014年10月22日

デバッグ文字の出力先 出力ウィンドウ イミディエイトウィンドウ DebugViewer

デバッグやトレースの出力先

以下のコードはボタンの押下イベントに紐付いたハンドラです。
ボタンを押下するとトレース文字を出力します。
        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Trace.WriteLine("★★★button1_Click★★★");
        }

出力ウィンドウ

OutputWindow.png
特別な設定がないデフォルトの状態では出力ウィンドウに出力されます。

イミディエイト・ウィンドウ

Option.png
上図のように、ツールオプション画面よりデバッグ出力ウィンドウの文字をすべてイミディエイトウィンドウにリダイレクトするにチェック設定をすることにより、イミディエイト・ウィンドウへ出力させることもできます。
なお、イミディエイト・ウィンドウ自体を表示させるにはデバッグメニューのウィンドウから選択します。

DebugViewer

VisualStudio上で実行する場合は上記の方法で確認できますが、実行ファイルを直接起動した場合などはこれらのウィンドウは使えません。
このような場合はDebugViewerというツールで出力文字をキャプチャすることができます。 マイクロソフト社から提供されている無料のツールです。

取得先 
http://technet.microsoft.com/ja-jp/sysinternals/bb896647.aspx

使い方
DebugView.png
上記サイトから最新版を取得するとZIPファイルが一つ落ちます。解凍するとEXEが一つあるのでそれを起動させるだけです。あとは勝手にキャプチャしてくれます。
posted by RR at 23:35 | Comment(0) | デバッグ | このブログの読者になる | 更新情報をチェックする