for WPF developers
Home Profile Tips 全記事一覧

ソースにリンクしたデバッグ出力をおこなう

(2016/12/03 0:10:24 created.)

System.Diagnostics.Debug クラスや System.Diagnostics.Trace クラスを使用することで出力ウィンドウに文字列を出力することができます。このとき、次のような書式で出力をおこなうことで、出力されたテキストをダブルクリックすると該当するソースコードにジャンプすることができるようになります。

Program.cs
  1. namespace Tips_DebugTrace
  2. {
  3.     using System.Diagnostics;
  4.     using System.Runtime.CompilerServices;
  5.  
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             WriteLine("アプリケーションが起動しました。");
  11.  
  12.             Task();
  13.  
  14.             System.Console.ReadKey();
  15.         }
  16.  
  17.         static void Task()
  18.         {
  19.             WriteLine("Task メソッドが実行されました。");
  20.         }
  21.  
  22.         /// <summary>
  23.         /// デバッグ出力をおこないます。
  24.         /// </summary>
  25.         /// <param name="message">出力するメッセージを指定します。</param>
  26.         /// <param name="name">メソッド名を指定します。</param>
  27.         /// <param name="filePath">ソースファイルのフルパスを指定します。</param>
  28.         /// <param name="lineNumber">行番号を指定します。</param>
  29.         [Conditional("DEBUG")]
  30.         static void WriteLine(string message, [CallerMemberName]string name = null, [CallerFilePath]string filePath = null, [CallerLineNumber]int lineNumber = 0)
  31.         {
  32.             var str = string.Format("{0}({1}) :{2} {3}", filePath, lineNumber, name != null ? " [" + name + "]" : "", message);
  33.             System.Diagnostics.Debug.WriteLine(str);
  34.         }
  35.     }
  36. }

重要なのは始めにファイルのフルパス、続いて "("、")" の括弧で括った行番号となっていることです。このようなメッセージの場合、ダブルクリックすると該当するソースファイルが開き、該当する行番号にカーソルがジャンプするようになります。上記の例では呼び出し元のメソッド名も同時に表示することでさらに分かりやすくしています。

また、VSColorOutput などの拡張機能によって出力ウィンドウに表示されるテキストに色を付けている場合、Information や Error といったキーワードを含むことでさらにわかりやすいメッセージとなります。