0

そのため、私の会社では、(Microsoft Visual Developer Studio のプラグインとして) Rational Purify という非常にバグのあるプログラムを使用して、メモリ リークを管理しています。このプログラムは、メモリ リークが発生した後にクリックして、リークが発生した行にジャンプできるように設計されています。

残念ながら、Purify は誤動作しており、Purify はリークが発生した場所にジャンプすることはできません。リークが発生したクラスとメソッドしか言及されていません。森に行き、クマがいると教えてください。

Purify の経験がある人は、この問題を解決する方法や、適切なマニュアルを参照する方法を知っていますか?

4

5 に答える 5

3

Purifyはスイスナイフのようなものです。それを使用する方法を知っている場合、あなたはいくつかの結果を得るでしょう、最高ではありませんが、それでも結果です。そうしないと、Windowsで実行されている別のプログラムであるため、クラッシュします。

結局、あなたは多くの忍耐、再建、そして少しの運が必要になるでしょう。

于 2008-10-22T16:47:30.767 に答える
3

Purifyには、ScanVSSolutionForPurifyPlus.plというスクリプトが付属しており、プロジェクトファイルにPurifyが正しく機能するための適切な設定がすべて含まれていることを確認します。まだ実行していない場合は、試してみてください。

(私は大規模なソリューションでScanVSSolutionForPurifyPlus.plを個人的に使用しましたが、それは魅力のように機能しました。1つの注意点:.slnファイルの名前を付けるときは、フルパス名を付ける必要があるかもしれません。)

于 2009-04-03T15:03:18.097 に答える
3

通常、2 つのオプションがあります。1 つは Purify のインストルメンテーションからモジュール DLL を除外します。2 つ目は、BoundsChecker を取得することです。これにより、コンパイル時間のインストルメンテーションが大幅に遅くなりますが、詳細レベルは桁違いに向上します。

通常、バグ/クラッシュが存在することがわかっている場合は、チェックイン、サニティ チェック、および BoundsChecker で Purify を使用します。

BoundsChecker には、インストルメント ファイル A.cpp と B.cpp のみを使用し、残りをすべて除外するなど、優れた機能がいくつかあります。

これら 2 つのアプリケーションはどちらも 64 ビット オペレーティング システムでは機能しないことに注意してください。BoundsChecker は 64 ビット OS にはインストールされません。32 ビット バック ポートを使用してネイティブ 64 ビット開発に切り替えると、最もイライラします。

于 2008-09-17T10:39:03.347 に答える
2

5年ほど前にPurifyを使用しました。その時は本当に不安定でした。彼らは、「次のリリース」ですべてのバグを修正すると約束し続けました。結局あきらめました。彼らが製品に独自の QA ツールを使用したかどうかは疑問に思うだけです。皮肉なことに...

于 2008-09-08T15:28:26.907 に答える
2

デバッグ ビルドがありますか? それとも、すべての PDB を有効にしていますか? 実行可能ファイルで WindDbg を試し、表示されているものを !lmi コマンドで確認してください。

コード全体が適切に計測されていますか?

また、無料の Visual Leak Detectorや Microsoft のツール LeakDiag などを使用することも検討してください。

于 2008-08-08T13:56:40.487 に答える