如何在.NET Profiler中获取唯一的方法ID(ICorProfilerCallback)?

时间:2012-05-01 16:36:32

标签: .net profiling clr-profiling-api

我使用.NET分析API(ICorProfilerCallback)并很快发现FunctionID不稳定(可以重复使用,请参阅http://msdn.microsoft.com/en-us/library/bb384619.aspx)。那一切都很好。我想出了使用模块版本ID(MVID)和方法标记(mdTokenDef)编码方法的想法。

但是,我担心这是空间无效的(GUID为16个字节,令牌为4个字节)。现在我考虑使用某种散列(我认为32位散列应该足够了。)

您如何看待,有更好的方法来编码方法吗?

1 个答案:

答案 0 :(得分:1)

很难弄错,在appdomain被拆除之前,FunctionID是稳定的。 FunctionUnloadStarted回调是从符号表中清除id的最直接方法。

请注意泛型。当Foo和Bar是引用类型时,List<Foo>List<Bar>的方法共享相同的函数id。这是代码在工作中的重用,这是.NET泛型的一个特性。