我收集使用CLR Profiler ICLRProfiling::AttachProfiler方法的主要好处是,您现在可以在目标进程开始后 附加您的CLR探查器您还不必在启动时将COR_ENABLE_PROFILING
和COR_PROFILER
环境变量传递给流程?这两个都是正确的假设吗?
此外,我在CLR分析小组blog post from 2011中读到ICLRProfiling::AttachProfiler不支持以下内容,但将来会支持:
GetILFunctionBody
GetILFunctionBodyAllocator
SetILFunctionBody
SetILInstrumentedCodeMap
SetEnterLeaveFunctionHooks*
SetFunctionIDMapper*
GetNotifiedExceptionClauseInfo
所有与Enter / Leave / Tailcall
现在支持这些吗?我问,因为我还没有在网上找到更多关于这个主题的信息,而且2011 - 2012年的许多微软链接现在已经死了。如果没有,那么在使用ICLRProfiling::AttachProfiler附加我的CLR Profiler时,是否可以IL重写函数体?
答案 0 :(得分:1)
答案很遗憾“不”,在CLR附加分析器模式下你不能进行IL重写;它仍然只在流程启动模式下受支持。
我的CLR Profiler实现中对ICorProfilerInfo::GetILFunctionBody()
方法的调用返回CORPROF_E_UNSUPPORTED_FOR_ATTACHING_PROFILER
:
GetILFunctionBody()失败,错误为0x8013136f
BasicAWSCredentials
source is here对于那些有兴趣深入研究这种情况的人来说。