|
分類:[.NET 全般]
■No7331に返信(NyaRuRuさんの記事)
> 何がやりたいのかよく分からないのですが,CLR Profiler に付属するソースコードを改良して機能を追加したいという話ですか? > この辺の API を使えば,呼び出し履歴の取得ぐらいは普通にできそうな気がしますけど.
NyaRuRu さん、ありがとうごさいます。
[デバッグテクニック徹底解説]の本によりますと, プロファインリングAPIの解説で、通知フラグの ENTERLEAVEでCALLBackを設定すると、 関数HOOKが可能で.下のクラスを実行すると,結果として, Trace実行結果 を作成することが可能が得られるとあります。 この機能を CLR_Profilerで出来ないのかと悩んでいます。 提示されたURLを熟読してみます。
------------------サンプルソース class ThreadOne { public void EntryPoint ( ) { Do ( ) ; }
void Do ( ) { Re ( ) ; }
void Re ( ) { Mi ( ) ; }
void Mi ( ) { Fa ( ) ; }
void Fa ( ) { So ( ) ; }
void So ( ) { La ( ) ; }
void La ( ) { Ti ( ) ; }
void Ti ( ) { Doh ( ) ; }
void Doh ( ) { MessageBeep ( -1 ) ; }
[DllImport("user32.dll")] private static extern Int32 MessageBeep ( Int32 uType ) ; } これを private void BtnThreadOne_Click(object sender, System.EventArgs e) { ThreadOne c = new ThreadOne ( ) ; Thread t = new Thread ( new ThreadStart ( c.EntryPoint ) ) ; t.IsBackground = true ; t.Name = "Thread One" ; t.Start ( ) ; } で起動します。 --▼Trace実行結果
Thread 1 started at : 11:33:33:0846 FlowTest.ThreadOne.EntryPoint FlowTest.ThreadOne.Do FlowTest.ThreadOne.Re FlowTest.ThreadOne.Mi FlowTest.ThreadOne.Fa FlowTest.ThreadOne.So FlowTest.ThreadOne.La FlowTest.ThreadOne.Ti FlowTest.ThreadOne.Doh System.Security.Permissions.SecurityPermission..ctor System.Security.Permissions.SecurityPermission.VerifyAccess System.Security.Permissions.SecurityPermission.VerifyAccess System.Security.Permissions.SecurityPermission..ctor FlowTest.ThreadOne.Doh FlowTest.ThreadOne.Ti FlowTest.ThreadOne.La FlowTest.ThreadOne.So FlowTest.ThreadOne.Fa FlowTest.ThreadOne.Mi FlowTest.ThreadOne.Re FlowTest.ThreadOne.Do FlowTest.ThreadOne.EntryPoint Thread ended at : 11:33:33:0846
--▲Trace結果
|