CLR Profiling and Rewriting using ICLRProfiling::AttachProfi
本文关键字:ICLRProfiling AttachProfi using Rewriting Profiling and CLR | 更新日期: 2023-09-27 17:55:21
ICLRProfiling::AttachProfiler 方法的主要好处是,您现在可以在目标进程启动很久之后附加 CLR 探查器,并且您也不必在启动时将COR_ENABLE_PROFILING
和COR_PROFILER
环境变量传递给进程?这两个假设都是正确的吗?
另外,我在 2011 年的 CLR 性能分析团队博客文章中读到,ICLRProfiling::AttachProfiler 不支持以下内容,但将来会
:GetILFunctionBody
GetILFunctionBodyAllocator
SetILFunctionBody
SetILInstrumentedCodeMap
SetEnterLeaveFunctionHooks*
SetFunctionIDMapper*
GetNotifiedExceptionClauseInfo
与进入/离开/尾调用相关的所有方法
现在是否支持这些内容?我问是因为我没有在网上找到更多关于这个主题的内容,而且 2011-2012 年的许多Microsoft链接现在已经死了。如果不是,那么在使用 ICLRProfiling::AttachProfiler 附加我的 CLR Profiler 时,是否可以 IL 重写函数体?
可悲的是,答案是"否",在 CLR 附加探查器模式下无法执行 IL 重写;它仍然仅在进程启动模式下受支持。
在我的 CLR 探查器实现中调用 ICorProfilerInfo::GetILFunctionBody()
方法将返回CORPROF_E_UNSUPPORTED_FOR_ATTACHING_PROFILER
:
GetILFunctionBody() 失败,错误0x8013136f
ICorProfilerInfo::GetILFunctionBody()
来源在这里,供那些有兴趣深入研究为什么会发生这种情况的人使用。