是否可以直接从 C# 使用 Profiling API?

发布于 2024-11-02 17:41:01 字数 143 浏览 1 评论 0原文

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

I just want to use .NET Profiling API (ICorProfilerCallback etc) but at the same time don't want to deal with C++. I've been looking around for a while and haven't found any example in C# but C# + C++ where the most interesting part is written using C++.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅听莫相离 2024-11-09 17:41:01

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

CLR 分析 API 的开发人员 David Broman 拥有 这句话

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

David 的博客是一个很好的资源处理 CLR 分析 API。

No, you cannot implement the CLR profiling APIs in managed code (C# or otherwise) since the profiling callbacks are called at very specific times when the managed environment is assumed to be in a certain state. Implementing your callbacks in managed code would violate a lot of assumptions.

David Broman, the developer of the CLR profiling APIs, has this to say:

You need to write your profiler in
C++. The profiler is called by the
runtime at very delicate points during
execution of the profiled application,
and it is often extremely unsafe to be
running managed code at those points.

David's blog is a great resource for dealing with the CLR profiling APIs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文