2017-12-21 16 views
-1

私はFastMMを使用しました。これは、漏れやメモリの問題を検出するのに最適なツールです。 しかし、私はDelphiで作られたCOMサーバーをチェックしようとしましたが、レポートは一貫していません。 私はShearMMと他のものでDLLにFastMMを設定しようとしましたが、これは妥当ではないことを認識しています(COMサーバはMMサーバを使用するバイナリから隔離されたブラックボックスでなければなりません)。 ...どうすれば設定できますか? FastMMがCOMサーバー上でリークを報告するように、サーバープロジェクトで有効にする必要があるものは何ですか?COMオブジェクトでのFastMM4の使用(Delphi)

編集


私は、一例として、デルファイのプロジェクトを追加します。これは、リークのあるCOMインプロセスオブジェクトと、それを消費するEXEプロジェクトで構成されます。クライアントを実行するとき、FastMM4のみがクライアントリークによるレポートを表示します。サーバー漏れが検出されない(あるいは報告されません)されています

Delphi Sample

好奇心は:代わりにFastMMの、私はDelphiのリークレポート(ReportMemoryLeaksOnShutdown)を使用する場合、サーバーで、サーバーのリークはDelphi(デルファイ)で発見されました!

もう一つの明確化:それはFastMM4源に来るように私FastMM4Options.incは、手つかずのです

答えて

0

あなたは、アウトプロセスサーバープロセスで実行するためにあなたのCOMオブジェクトを設定している場合はそのように、あなたのCOMオブジェクトの作成EXEファイルを起動すると、あなたが説明したように呼び出しプロセスから隔離されたFastMMを自由に使用することができます。

EXEファイルは、このようにCOMによって起動された場合は、最後のオブジェクトが解放されたときに(ComServerはSystem.Win.ComServ.pas単位で宣言されている)ComServer.OnLastReleaseイベントで、この動作を上書きしない限り、デフォルトでは、終了します。

+0

おかげStijnが、私はインプロセスサーバー、私は私の質問は、より正確にするために例を追加した – Angel

+0

(私が編集した私の元の質問)(CreateCOMObjectの関数またはC++でCoCreateInstanceを経由して)実行します – Angel

関連する問題