2011-10-05 12 views
5

C#.NET Framework 2.0で開発されたアプリケーションで、COMコンポーネント(C++アンマネージコードで開発されています)と対話しています。場合によっては、アプリケーションがメモリ不足の例外をスローします(再現するのは非常に困難です)。C#およびアンマネージC++アプリケーションのメモリリークを検出するツール

メモリリークがあるかどうかを調べ、メモリ例外の根本的な原因を特定するツールが必要です。これにはどんなツールが最適でしょうか?理想的なツールは、分析を実行するためにユーザーのマシン上の実行中のプロセスにアタッチすることができます。

.NETメモリプロファイラーを試しましたが、.NET Framework 4.0実行プロセスにのみ接続できます。 Memory Validator(C++メモリリークディテクタ)も使用しました。しかし、このツールは、実行中のプロセスにアタッチするときに十分なヒントを与えませんでした。最も基本的なテストのためにhttp://www.codeproject.com/KB/cpp/MemoryLeak.aspx

答えて

0

はWinDbgをと、この領収書を試してみてください。多くのCOMコードは、予期しない場所でヌルポインタが発生した場合にメモリ不足を引き起こすため、例外コードが誤解を招く可能性があります。

0

、あなたがSysinternalsのは、あなたが本当にメモリリークの問題を抱えているかどうかを確認するためにprocexp.exe使用することができます

2

短い答えは

あなたはMicrosoft Application Verifierを試みたことがありますか?それは非常に小さいですが、私は思い切って最小限の、しかし驚くほど強力なツールです。メモリリークの問題の私の調査中に

長い答え

、私はMicrosoft WindbgMicrosoft Application Verifierを使用していると私は徹底的にRed Gate ANTS Performance Profilerを評価した(私が購入することをお勧めしている、と私は個人によって購入することをお勧めします見てきました多くの異なるチームのさまざまな開発者)、DotTraceおよび.Net Memory Profiler

このようなツールを1つ以上使用する方法を知り、チームの開発者の間でプールされた仮想マシンでホストされている仮想開発環境にインストールする方法があります。

これらのツールや他のツールを評価した場合、私の大きなセールスポイントは、Windbgで撮影したメモリダンプを調査することです。これは、顧客からでも最も簡単に入手できるためです。

関連する問題