23

我只想使用 .NET Profiling API(ICorProfilerCallback等),但同时不想处理 C++。我已经环顾了一段时间,但没有找到 C# 中的任何示例,但 C# + C++ 中最有趣的部分是使用 C++ 编写的。

4

1 回答 1

29

不,您不能在托管代码(C# 或其他)中实现 CLR 分析 API,因为当假定托管环境处于某种状态时,分析回调在非常特定的时间被调用。在托管代码中实现回调会违反很多假设。

CLR 分析 API 的开发者 David Broman 有这样的说法

您需要用 C++ 编写探查器。在分析的应用程序执行期间,运行时会在非常微妙的点调用分析器,在这些点运行托管代码通常是极其不安全的。

David 的博客是处理 CLR 分析 API 的绝佳资源。

于 2011-04-20T21:54:05.283 回答