2010-11-30 17 views
0

私はC#を使用して開発されたWebサイトを持っています。私はメソッドの呼び出し側、つまりメソッド/イベントハンドラが自分のメソッドを呼び出すのを見たいと思います。C#:メソッドの呼び出しの詳細

ボタンがクリックされたとします。私は次のように見ていきます

btnClick  BusinessLayerClass.SaveDocs(int docID, string docType) DataAccessLayerClass.Update() 

btnClick  BusinessLayerClass.SaveDocs(int docID, string docType) DataAccessLayerClass.Increase() 

このようなスタック情報は見えますか?

注::すべてのプロジェクトがdllとして追加されます。 WCFのようなサービスはありません。

+0

を使用することができます。これはデバッグのためのもので、それ以上のものはありません。私たちは**あなたがそれを見たいと思う理由を知っていますか? –

+0

@ Vilx-:スタックトレースを取得する有効な理由があります。 – leppie

+1

@leppieスタックトレースを取得する有効な理由はほとんどありません。 –

答えて

4

System.Environment.StackTraceは、アプリケーション内のスタックトレースは、ほとんど常に悪い設計上の選択でチェック

private void button1_Click(object sender, EventArgs e) 
    { 
       StackTrace st = new StackTrace(true); 
     StackFrame[] fram = st.GetFrames(); 

     foreach (StackFrame sf in fram) 
     { 
      sf.GetFileColumnNumber(); 
      sf.GetFileLineNumber(); 
      sf.GetFileName(); 
      sf.GetILOffset(); 
      sf.GetMethod(); 

     } 
    } 
+0

ありがとうございます。しかし、メソッド呼び出しの順序はどうやって知ることができますか? (SaveDocsはUpdate()と同じですか?) – Lijo

+0

GetFrames()メソッドが返す配列は、呼び出されるメソッドの順序を維持していると思います。上記のコードでは、最初または最後のフレームは、あなたのメソッドを呼び出したフレームでなければなりません。あなたがそれを理解するまでちょっと遊んでください。 – decyclone

関連する問題