使用ICLRProfiling :: AttachProfiler()进行CLR分析和重写

时间:2016-07-06 21:15:12

标签: c# .net profiling clr clr-profiling-api

我收集使用CLR Profiler ICLRProfiling::AttachProfiler方法的主要好处是,您现在可以在目标进程开始后 附加您的CLR探查器您还不必在启动时将COR_ENABLE_PROFILINGCOR_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重写函数体?

1 个答案:

答案 0 :(得分:1)

答案很遗憾“不”,在CLR附加分析器模式下你不能进行IL重写;它仍然只在流程启动模式下受支持。

我的CLR Profiler实现中对ICorProfilerInfo::GetILFunctionBody()方法的调用返回CORPROF_E_UNSUPPORTED_FOR_ATTACHING_PROFILER

  

GetILFunctionBody()失败,错误为0x8013136f

BasicAWSCredentials source is here对于那些有兴趣深入研究这种情况的人来说。