2009-03-07 14 views
6

例外が発生した場合は、StackTraceを印刷して確認することができます。Stacktraceの取得

例外が発生しなくてもStackTraceを取得したい場合はどうすればよいですか?

これを行う方法はありますか?

答えて

9

あなたは、あなたがStackTraceオブジェクトを構築し、そこから有用な情報を抽出することができます例外をキャッチするとEnvironment.StackTrace

string tracktrace = System.Environment.StackTrace; 
9

を呼び出すことにより、任意の時点でスタックトレースをプリントアウトすることができます。次の例を参照してください。

 StackTrace st = new StackTrace(true); 
     for(int i =0; i< st.FrameCount; i++) 
     { 
      // Note that high up the call stack, there is only 
      // one stack frame. 
      StackFrame sf = st.GetFrame(i); 
      Console.WriteLine(); 
      Console.WriteLine("High up the call stack, Method: {0}", 
       sf.GetMethod()); 

      Console.WriteLine("High up the call stack, Line Number: {0}", 
       sf.GetFileLineNumber()); 
     } 

PS:これは例外なしで動作します。How to print the current stack trace in .NET without any exceptionを参照してください。

1

System.Environment.StackTraceはすばらしいツールですが、探しているものが常に得られるわけではなく、出力に影響するx86プラットフォームとx64プラットフォームの違いがあることに注意してください。 Grody details here

関連する問題