最近一周,我一直在研究CLR性能分析API,作为夏季的个人项目。
我开始思考ANTS和DotTrace如何实现行级别的性能分析。我在Profiling API中找不到任何相关内容,因此我认为它们有一些专利技术。
我正在寻找关于它们如何实现这一点的指示或想法。
他们在代码被JIT编译时注入了MSIL代码吗?
最近一周,我一直在研究CLR性能分析API,作为夏季的个人项目。
我开始思考ANTS和DotTrace如何实现行级别的性能分析。我在Profiling API中找不到任何相关内容,因此我认为它们有一些专利技术。
我正在寻找关于它们如何实现这一点的指示或想法。
他们在代码被JIT编译时注入了MSIL代码吗?
CLR性能分析API支持的仅仅是进入和离开级别的跟踪。可以使用ICorProfilerInfo::SetEnterLeaveFunctionHooks来实现。
为了在更细的级别上进行跟踪,需要编织IL。您可以使用这些开源分析器代码作为参考:
两者都在JITCompilationStarted 回调期间编织代码。