23

.NET プロファイリング API (など) を使用したいだけですICorProfilerCallbackが、同時に C++ を扱いたくありません。私はしばらく見回してきましたが、C# の例は見つかりませんでしたが、最も興味深い部分は C++ を使用して記述されている C# + C++ です。

4

1 に答える 1

29

いいえ、マネージコード(C#など)でCLRプロファイリングAPIを実装することはできません。これは、プロファイリングコールバックが、マネージ環境が特定の状態にあると想定される非常に特定の時間に呼び出されるためです。マネージコードにコールバックを実装すると、多くの仮定に違反します。

CLRプロファイリングAPIの開発者であるDavidBromanは、次のように述べています。

プロファイラーはC++で作成する必要があります。プロファイラーは、プロファイリングされたアプリケーションの実行中の非常にデリケートなポイントでランタイムによって呼び出され、それらのポイントでマネージコードを実行することはしばしば非常に危険です。

Davidのブログは、CLRプロファイリングAPIを扱うための優れたリソースです。

于 2011-04-20T21:54:05.283 に答える