2

CLR をホストして C# を洗練された「スクリプト」言語として使用するネイティブ Win32 アプリケーションがあります。

メモリ リークが発生したため、Microsoft の CLR Profiler を使用して調査することにしました。(リークが管理されているかどうかはわかりませんが、このツールがそれを明らかにするのに役立つことを望んでいました。)

ただし、CLRProfiler に (ネイティブ) アプリケーションを開始するように指示すると、アプリケーションは常に実行の最初の 1 秒以内に CLR を開始しますWaiting for application to start common language runtimeが、アプリケーションが明らかにマネージド コードを実行しているにもかかわらず、CLRProfiler はプロンプトを表示し続けます。

CLRProfiler は、マネージ専用プログラムが CLR を開始するために使用するスタブによって開始された場合にのみ CLR に接続でき、アプリケーションが明示的にロードされて起動された場合ではありませんMSCOREE.DLLか? それとも、私は単に何か間違ったことをしていますか?

または、CLRProfiler がうまく機能するように CLR を開始するときに、ネイティブ アプリケーションで実行する必要がある (できれば単純な) ものはありますか?

4

1 に答える 1

1

2つのことを行った後、私はそれを機能させました:

  1. CLR Profiler の .NET Framework 2.0 バージョンを使用します。別の .NET Framework 1.1 バージョンがあります。これは、私が最初に見つけたものです。おそらく CLR 2.0 以降では動作しません。と

  2. 管理者アカウントで CLR プロファイラーとアプリケーションを実行します。

CLR プロファイラー (少なくとも Framework 2.0 バージョン) は、CLR をホストするネイティブ アプリケーションで機能します (もちろん、マネージ コードのみを検査します)。

于 2013-04-03T20:04:42.407 に答える