CallStackLines で、現在のコールスタックが文字列に変換されます。引数の count には、出力するスタックの個数を指定します。ただし、0 を指定すると、全てのコールスタックが出力されます。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Text;
namespace SSS
{
public class DebugUtil
{
public static void AppendCallStack(
StringBuilder sb, int start, int count, string sep
)
{
StackTrace st = new StackTrace();
if (count == 0)
{
count = st.FrameCount;
}
else
{
count += start;
if (count > st.FrameCount)
count = st.FrameCount;
}
for (int i = start; i < count; ++ i)
{
if (i > start)
sb.Append(sep);
sb.Append(st.GetFrame(i).GetMethod().ReflectedType.FullName);
sb.Append("::");
sb.Append(st.GetFrame(i).GetMethod().Name);
}
}
public static string CallStackLines(int count)
{
StringBuilder sb = new StringBuilder();
AppendCallStack(sb, 2, count, "\n");
return sb.ToString();
}
}
}
AppendCallStack の start に 2 を指定しているのは、出力に AppendCallStack と CallStackLines を除くためです。
このサイトのページへのリンクは自由に行っていただいてかまいません。
このサイトで公開している全ての画像、プログラム、文書の無断転載を禁止します。
ここをクリック
すると表示されるページから作者へメールで連絡できます。