LoginSignup
22
21

More than 5 years have passed since last update.

Visual Studio2013のトレースポイント機能を使用してメソッドの引数・戻り値をデバッガに出力する

Last updated at Posted at 2015-04-29

Visual Studio2013のトレースポイントについて

Visual Studio2013のデバッガには、ブレークポイントに似た機能としてトレースポイントという機能があります。
トレースポイントは、プログラムの指定したコード行にてトレースを出力するという、所謂「printfデバッグ」を実現する機能となります。
トレースポイントを使用することにより、ソースコードを変更せずにメソッドの引数・戻り値をデバッガに出力させることが可能となります。

トレースポイントで出力するメッセージの仕様

トレースポイントで出力するメッセージは、下記のキーワード及び中括弧記号で変数や式を指定可能となります。

キーワード 説明
$ADDRESS 現在の命令
$CALLER 呼び出し元関数名
$CALLSTACK 呼び出し履歴
$FUNCTION 現在の関数名
$PID プロセスID
$PNAME プロセス名
$TID スレッドID
$TNAME スレッド名
$TICK CPUのティック数
$FILEPOS 現在のファイルの位置

トレースポイントの使用方法

下記のプログラムに対してトレースポイントを使用し、Addメソッドの引数・戻り値をデバッガに出力させます。

Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Add(1, 2));
        }

        static int Add(int lhs, int rhs)
        {
            var ret = lhs + rhs;
            return ret;
        }
    }
}
  • 18行目の「var ret = lhs + rhs;」及び19行目の「return ret;」に対してF9キーでブレークポイントを追加し、「ヒット時」の設定を行います。なお、$CALLSTACKキーワードでは、呼び出し元メソッドの行番号が出力されないため、StackTraceクラスを使用してスタックトレースを出力するようにしています。
名前 ヒット時に出力するメッセージ
Program.cs、18行13文字 {System.DateTime.Now.ToString()} [開始] \$FUNCTION $TID lhs={lhs} rhs={rhs} {new System.Diagnostics.StackTrace(true).ToString().Replace("\r\n", null)}
Program.cs、19行13文字 {System.DateTime.Now.ToString()} [終了] \$FUNCTION $TID ret={ret} {new System.Diagnostics.StackTrace(true).ToString().Replace("\r\n", null)}

ブレークポイント.png
ブレークポイントのヒット時.png

  • F5キーを押下してプログラムをデバッグ実行し、出力ウィンドウにAddメソッドの引数・戻り値が出力されていることを確認します。

トレース結果.png
トレース結果Excel.png

参考資料

ブレークポイントとトレースポイントの使用
https://msdn.microsoft.com/ja-jp/library/5557y8b4.aspx

22
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
21