【C#】スタック情報の取得 ~スタック・トレース(StackTrace)~

StackTrace

http://blogs.yahoo.co.jp/dk521123/20212247.html
でStackTrace()を勉強したので、個別にまとめる

現在のスタック・トレース情報を取得

* System.Environment.StackTrace取得

サンプル

Console.WriteLine( System.Environment.StackTrace);

参考資料

http://www.atmarkit.co.jp/fdotnet/dotnettips/1026stacktrace/stacktrace.html

呼び出し元のクラス名取得

 * StackTraceのGetMethod().ReflectedType.FullNameで取得

呼び出し元のメソッド名取得

 * StackTraceのGetFrame(1).GetMethod().Nameで取得

参考資料

http://gushwell.ldblog.jp/archives/50715142.html

呼び出し元のライン数取得

 * StackTraceのGetFrame(1).GetFileLineNumber()で取得

サンプル

System.Diagnostics.StackTrace stackTrace
 = new System.Diagnostics.StackTrace(true); // trueにしないとライン数がまともに表示されない

Console.Write(stackTrace.GetFrame(1).GetMethod().Name);
Console.WriteLine("Line : " + stackTrace.GetFrame(1).GetFileLineNumber().ToString());

参考資料

http://ja.efreedom.com/Question/1-394850/%E5%91%BC%E3%81%B2%E5%87%BA%E3%81%97%E5%85%83%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%88%E3%81%A6%E3%81%AFC-%E3%81%A6%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF

注意

 * デバッグビルドだと使えない?(回避方法もあるみたい)

参考資料

http://csharper.blog57.fc2.com/blog-entry-234.html
http://msyi303.blog130.fc2.com/blog-entry-16.html