0

CLR プロファイラーICLRProfiling::AttachProfilerメソッドを使用する主な利点は、ターゲット プロセスが開始されてからずっとにCLR プロファイラーをアタッチできることCOR_ENABLE_PROFILING、起動時に環境変数とCOR_PROFILER環境変数をプロセスに渡す必要がないことです。? これらは両方とも正しい仮定ですか?

また、2011 年の CLR プロファイリング チームのブログ投稿でICLRProfiling::AttachProfilerは次のものをサポートしていないが、将来的にはサポートすることを読みました。

  • GetILFunctionBody

  • GetILFunctionBodyAllocator

  • SetILFunctionBody

  • SetILInstrumentedCodeMap

  • SetEnterLeaveFunctionHooks*

  • SetFunctionIDMapper*

  • GetNotifiedExceptionClauseInfo

  • Enter/Leave/Tailcall に関連するすべてのメソッド

これらは現在サポートされていますか? オンラインでこれ以上何も見つけられず、2011年から2012年までのマイクロソフトのリンクの多くは現在死んでいるので、私は尋ねています. そうでない場合、 ICLRProfiling::AttachProfilerを使用して CLR プロファイラーをアタッチするときに、IL で関数本体を書き換えることさえ可能ですか?

4

1 に答える 1

1

残念ながら、答えは「いいえ」でした。CLR アタッチ プロファイラー モードでは、IL 書き換えを行うことはできません。プロセス起動モードでのみサポートされています。

ICorProfilerInfo::GetILFunctionBody()私の CLR Profiler 実装のメソッドへの呼び出しは、次を返しCORPROF_E_UNSUPPORTED_FOR_ATTACHING_PROFILERます。

GetILFunctionBody() がエラー 0x8013136f で失敗しました

なぜこれが起こるのかを掘り下げることに興味がある人のために、ICorProfilerInfo::GetILFunctionBody() ソースはここにあります.

于 2016-07-07T16:35:47.420 に答える