210

Valgrind を調べて、C コーディング/デバッグが Linux 専用であることを発見したとき、OS を Linux に移行する必要や興味がないので、Windows 用の同様に優れたプログラムがあるかどうか疑問に思っていました。

4

38 に答える 38

117

jakobengblom2 が指摘したように、valgrind には一連のツールがあります。あなたが話しているものに応じて、さまざまなウィンドウカウンターパーツがあります。ここでは、OSS または無料のツールについてのみ言及します。

1. メモリチェック:

メモリ博士。これは比較的新しいツールで、Windows 7 で非常にうまく機能します。私のお気に入りの機能は、レポートで同じリークの割り当てスタックをグループ化することです。

http://code.google.com/p/drmemory/

UMDH ( http://support.microsoft.com/kb/268343 ) も使用しましたが、静かで便利でセットアップが簡単であることがわかりました。Win2000からWin7まで動作します。

AppVerifier は Windows ネイティブ コード開発者にとって必須のスイスナイフです。その「メモリ」チェッカーは同様の仕事をします http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx

2.コールグラインド:

私のお気に入りは verysleepy です ( http://www.codersnotes.com/sleepy ) 小さいですが、非常に便利で使いやすいです。

さらに機能が必要な場合は、AMD CodeAnalyst™ パフォーマンス アナライザーを無料で入手できます: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx

Windows パフォーマンス分析ツールは Microsoft から無料で提供されており、使いやすいものではありませんが、時間を費やす意思があれば仕事を成し遂げることができます。http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx ダウンロード: http://msdn.microsoft.com/en-us/performance /cc752957

3.山塊:

Windows 用の同様の (完全に一致するわけではない) 無料ツールは次のとおりです。

sysinternals の VMMap : http://technet.microsoft.com/en-us/sysinternals/dd535533

!windbg のヒープ コマンド: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html

4. キャッシュグラインド:

前述の Windows Performance Tools には、一定レベルの L2 キャッシュ ミス プロファイリング機能がありますが、Cachegrind ほど使いやすくはありません。

5.DRD:

Windows で無料で強力なものはまだ見つかっていませんが、Windows 用の唯一の無料ツールで、わずかに近いものは AppVerifier の「ロック」チェッカーです: http://msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx

于 2011-07-05T09:13:11.137 に答える
29

その他の優れた商用ツール:

于 2009-01-05T17:19:23.620 に答える
15

Visual C++ の場合は、Visual Leak Detectorを試してください。私が使ってみると、new呼び出しからのメモリ リークを検出し、リークのソース コードの実際の行を返しました。最新のリリースはhttp://vld.codeplex.com/にあります。

于 2009-08-30T13:16:23.587 に答える
14

使用しているWindowsの開発環境には、独自のツールが含まれている場合があります。たとえば、Visual Studioを使用すると、プログラムのメモリリークを検出して分離できます。

于 2009-01-05T16:40:50.653 に答える
14

私はいくつかのツールをリストしたいと思います、希望は役に立つでしょう

詳細については、この記事をお読みください

  1. 清める
  2. 境界チェッカー
  3. コベリティ(基本的にはコードアナライザーですが、静的なメモリリークをキャッチします)
  4. グローコード
  5. dmalloc
  6. ccmalloc
  7. NJAMD
  8. YAMD
  9. Valgrind
  10. mpatrol
  11. Insure ++
于 2009-10-01T13:59:54.220 に答える
12

Windows 用のデバッグ ツールの一部である Pageheap.exe があります。これは無料で、基本的にはカスタム メモリ アロケータ/デアロケータです。

http://support.microsoft.com/kb/286470を参照してください。

于 2009-04-09T05:37:22.680 に答える
8

Visual Studio と組み合わせて、私は通常、Visual Leak Detectorを使用するか、単純に win32 API 呼び出しである _CrtDumpMemoryLeaks() を使用します。どちらも空想的ではありませんが、仕事を成し遂げます。

于 2009-10-01T09:45:17.773 に答える
6

過去にCompuwareDevPartnerStudioを使用する機会があり、それは本当に良かったのですが、かなり高価です。より安価な解決策はGlowCodeである可能性があります。私は、5.xバージョンで作業しました。デバッグする必要のあるプロセスに接続する際にいくつかの問題がありましたが、非常にうまく機能しました。

于 2009-01-05T15:50:44.610 に答える
6

私はSoftwareVerificationという会社のMemoryValidatorが大好きです。

于 2009-01-05T15:58:22.440 に答える
5

Visual Studio は、メモリ リーク自体を検出するのに役立ちます。Microsoft Visual C++ のヒントとコツ-> 「メモリ リーク」セクションを参照してください。SOのこの投稿も参照してください

ただし、実際のトレースは Visual Studio の Team Edition でのみ可能です。

于 2009-10-01T09:16:32.323 に答える
4

同様のツールのリストについては、ソフトウェアQAテストおよびテストツールのリソースページの「ソーステストツール」リンクを参照してください。

私は過去にプロファイリングにBoundsChecker、DevPartner Studio、IntelV-Tuneを使用しました。私はV-Tuneが一番好きでした。さまざまなIntelチップセットをエミュレートでき、そのプラットフォーム向けに最適化する方法のヒントが得られます。

于 2009-01-05T15:53:58.300 に答える
3

Boost Testライブラリは、メモリリークを検出できます。

于 2010-07-02T07:08:59.647 に答える
3

Jochen Kalmbach の Memory Leak Detectorは資格がありますか?

PS: 最新バージョンへの URL は、記事のコメント スレッドのどこかに埋め込まれています。

于 2010-03-03T09:42:00.487 に答える
3

ピュリファイはどうですか?

于 2009-10-01T09:04:56.123 に答える
3

LeakDiag、UMDH、App Verifier、DebugDiag はすべて、コードの堅牢性を向上させ、メモリ リークを見つけるのに役立つツールです。

于 2010-04-19T11:38:00.263 に答える
3

メモリとスレッドの問題の両方を検出するのに役立つ Intel の Inspector XE 製品を試してください: http://software.intel.com/en-us/articles/intel-inspector-xe/

于 2012-02-21T19:57:46.840 に答える
2

リスト用の別のメモリツール:MemoryValidator

無料ではありませんが、PurifyやBoundscheckerほど高価ではありません。

于 2010-04-02T13:57:19.343 に答える
2

おそらくCodeSnitchはあなたが求めているものでしょうか?http://www.entrek.com/codesnitch.html

于 2009-01-05T15:56:00.823 に答える
2

私は今日このSFプロジェクトを見つけました:

http://sourceforge.net/p/valgrind4win/wiki/Home/

彼らはvalgrindをWindowsに移植しています。おそらく数年以内に、窓に信頼できるvalgrindができるようになるでしょう。

于 2012-06-05T09:17:48.843 に答える
2

GCC と Micrsoft Visual C (まだ C++ ではない) を処理する Windows 用のメモリ セーフティ チェック ツールを完成させており、ベータ テスターを探しています。

編集 2011 年 6 月 12 日: もうベータ版ではなく、GCC および Microsoft Visual Studio C 向けの製品になりました。

于 2011-04-06T10:56:02.153 に答える
2

Borland/CodeGear/Embarcadero C++ Builder で開発している場合は、CodeGuard を使用できます。

于 2009-07-15T22:04:30.377 に答える
2

私がこれまでに使用した最高のツールはDevPartner BoundsCheckerです。これは無料ではありませんが、評価期間があります。

于 2009-10-01T10:23:01.440 に答える
2

あなたがmingwを恐れていないなら、ここにいくつかのリンクがあります(MSVCで動作するものもあります)... http://betterlogic.com/roger/?p=1140

于 2010-08-09T14:15:51.977 に答える
2

多かれ少なかれ、すべてのプロファイラーにはメモリ リークのチェックが含まれており、メモリが割り当てられたときのスタックが表示されます。

Intels Parallel Inspectorをお勧めします。使いやすく、再コンパイルは必要ありません。試用版は 30 日間実行されます。

GlowCodeAtromatedQAにもそのような機能が含まれています。いずれも無料トライアルを提供しています。

Contrast の Compuware DevPartner (別名 BoundsChecker) では、低速の「インスツルメンテーション」再コンパイルが必要であり、エラーをチェックするときのアプリケーションの実行も遅くなります。また、BoundsChecker は 64 ビットの evsrions ではまったく機能しません。私たちはそのツールをあきらめました。

于 2009-10-01T09:32:17.237 に答える
1

無料のツールDebugDiagは、メモリの検索とリークの処理に役立ちます。

DebugDiagを機能させるために、プログラムを拡張する必要はありません。

http://www.microsoft.com/downloads/details.aspx?FamilyID=28BD5941-C458-46F1-B24D-F60151D875A3&displaylang=en

使用するのが最も簡単または最も直感的なプログラムではありませんが!あなたがそれを使用する方法についてのチュートリアルと指示のためにグーグルすることを確認してください。

于 2010-03-15T10:36:48.907 に答える
1

「GameProgrammingGems8」の記事「ゲーム内メモリプロファイラーの設計と実装」を参照してください。

CD-ROMで提供されるソースコードである、オーバーヘッドの少ない半侵入型リアルタイムメモリプロファイラを実装する方法を示します。

ここに画像の説明を入力してください

于 2011-07-21T03:33:00.890 に答える
1

ユーザー モード ダンプ ヒープ (UMDH) ユーティリティは、オペレーティング システムと連携して、特定のプロセスに対する Windows ヒープの割り当てを分析します。これは、Microsoft から無料で提供されている非常に優れたツールです。これは、「 Umdh.exeを使用してメモリ リークを見つける方法」というミニ チュートリアルです。

于 2009-10-01T18:20:57.937 に答える
1

メモリ リークに関してMozillaが行っていることを読みたいと思うかもしれません。ツールボックスの 1 つのツールは、メモリ リーク検出器として使用される Hans Boehm ガベージ コレクターです。

于 2009-10-01T11:41:28.650 に答える
1

この質問を確認してください: Windows に代わる適切な Valgrind はありますか? . valgrind の一般的な代用が求められますが、主にメモリ リーク検出器について説明し、競合状態の検出については説明しません。

于 2009-10-01T09:07:03.777 に答える
1

確実に浄化!私はそれを使用していくつかの大規模なコード ベース (>3,000 kSLOC) を分析しましたが、それが優れていることがわかりました。

ウィキペディアでこのリストをご覧になることをお勧めします。

ところで、memwatchが便利であることがわかりました。ありがとうヨハン!

于 2009-10-01T09:11:09.827 に答える
1

Clang は Address Sanitizer プラグイン (-faddress-sanitizer オプション) をサポートしており、Valgrind が検出できるほとんどのバグを検出できます (初期化されていないメモリ読み取りとメモリ リークの検出はまだサポートしていません)。Valgrind や他の同様のツールとの比較については、このページを参照してください。現在、公式の Windows への移植が進行中です。 Windows ASan への移植を参照してください。

数か月前に Windows で自分でビルドしようとしましたが、あきらめました。関連する質問を参照してください。もう一度試してみたい場合は、状況が改善されている可能性があります。

于 2012-09-24T00:32:15.073 に答える
1

RuntimeCheckerトライアルまたはIBM Purifyトライアルを試すことができます。

無料の解決策は、Visual Studio で次のコードを使用することです。

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

これをすべての cpp ファイルの先頭に書くだけです。これにより、デバッグ実行を停止したときにアプリケーションのメモリ リークが検出され、それらが出力ウィンドウに一覧表示されます。メモリ リークの行をダブルクリックすると、メモリが割り当てられ、解放されていない行が強調表示されます。これはあなたを助けるかもしれません: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml

于 2009-10-01T12:15:56.893 に答える
1

C++ のメモリ リークや破損、および初期化されていない変数、ポインタ エラー、文字列などの他の多くのバグを見つけるのに優れた仕事をする Insure++ を使用しました。また、視覚的な「コード カバレッジ」や実行時のメモリ使用量なども行います。あなたのコード..トレイルバージョンで試すことができます..

于 2009-10-01T09:42:05.690 に答える
0

Windows上のC++アプリケーションでのメモリリークの検出

于 2012-08-09T11:25:29.310 に答える
0

Parasoft Insure++ は常に信頼できます。

http://www.parasoft.com/jsp/products/insure.jsp?itemId=63

于 2011-04-05T20:31:38.443 に答える
0

単なるアイデアですが、メモリ アロケータを実装して、malloc と free へのすべての呼び出しを追跡することもできます。ただし、これは一部のプロジェクトでは多すぎる場合があります。

于 2011-02-06T16:58:12.167 に答える