2012-03-26 8 views
1

可能性の重複:this問題のコメントから始め
CallStack determines where you are going next?スタックトレースとは何ですか?

、私はスタックトレースが何であったかを知っていたが、私は、私はいないと思い思いました。私はそれをgoogledしたが、明確な答えを見つけることができた。

@asawyer says

あなたがしてきたところスタックトレースが識別されませんが、次に行くされている場合、それはあなたに伝えます。ここで

例外発生時にコードが呼ばれるであろう方法を考え出すことができますが、ほとんどのプログラム

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Method1(); 
     } 

     private static void Method1() 
     { 
      Method2(); 
     } 

     private static void Method2() 
     { 
      Random rnd = new Random(); 
      int i = rnd.Next(0, 100); 

      throw new Exception(); 

      if (i > 50) 
       Method3(); 
      else 
       Method4(); 
     } 

     private static void Method3(){ } 

     private static void Method4(){ } 
    } 
} 

は、これは、この

at ConsoleApplication1.Program.Method2() in C:\Users\Ash Burlaczenko\Desktop\CSSD\Assignment 3\ConsoleApplication1\ConsoleApplication1\Program.cs:line 25 
    at ConsoleApplication1.Program.Method1() in C:\Users\Ash Burlaczenko\Desktop\CSSD\Assignment 3\ConsoleApplication1\ConsoleApplication1\Program.cs:line 17 
    at ConsoleApplication1.Program.Main(String[] args) in C:\Users\Ash Burlaczenko\Desktop\CSSD\Assignment 3\ConsoleApplication1\ConsoleApplication1\Program.cs:line 12 
    at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
    at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
    at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
    at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 
    at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
    at System.Threading.ThreadHelper.ThreadStart() 

のようなスタックトレースを生成していますiの値を知っています。Stack Traceは、将来のメソッド呼び出しについて何も言及していません。

どこでスタックトレースがコードの場所を教えてくれるのか、間違っていますか?

+0

私は何エリックが意味することは、「次」のステップあなたが取ることということであると仮定スタックの一番上から飛び出したとき(つまり、関数呼び出しから戻るとき)に得られるものです(通常は)。 –

答えて

3

スタックトレースは、どこにいたのかを示し、現在の機能から正常に復帰したと仮定します。ここで最終的に戻ります。現在の関数の内容に応じて、スタックトレースに表示されない(つまり、現在の関数が呼び出す関数ですが、まだ実行されていない)関数が最初に実行されることがあります/あなたがそれらに入るまで)。

関連する問題