web-dev-qa-db-ja.com

Windowsに代わる良いValgrindはありますか?

私は自分のCコーディング/デバッグがLinux専用であることを発見したとき、私はValgrindを調べていました - 私は自分のOSをLinuxに移すことに他の必要性も興味もありません。

210
Drake

いくつかのより良い市販のツール:

29
orip

Jakobengblom2が指摘したように、valgrindは一連のツールを持っています。あなたが話しているものに応じて、さまざまなwindowsの対応部分があります。ここではOSSや無料のツールについてだけ触れます。

1。 MemCheck:

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

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

私はUMDH( http://support.Microsoft.com/kb/268343 )も使用しましたが、静かで便利でセットアップが簡単です。 Win2000からWin7まで動作します。

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

2。 Callgrind:

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

より多くの機能が必要な場合は、AMD CodeAnalyst™パフォーマンスアナライザーは無料です。 http://developer.AMD.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx

Windows Performance Analysisツールはマイクロソフトから無料で入手できるので、使い方はそれほど簡単ではありませんが、時間をかけたい場合は仕事をこなすことができます。 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からのVM​​Map: http://technet.Microsoft.com/ja-jp/sysinternals/dd535533

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

4。 Cachegrind:

上記のWindows Performance Toolsには、ある程度のL2キャッシュミスプロファイリング機能がありますが、Cachegrindほど優れた使いやすさはありません。

5。 DRD:

まだWindows上で無料でパワフルなものは何も見つかっていませんが、もう少し近いWindows用の唯一の無料ツールはAppVerifierの「ロック」チェッカーです。 http://msdn.Microsoft。 com/ja-jp/library/dd371695%28v = 85%29.aspx

117
Lailin Chen

WindowsアプリケーションをデバッグするためにValgrind + Wineを使用しないのはなぜですか。 http://wiki.winehq.org/Wine_and_Valgrind を参照してください。

(Chromiumはこれを使用して、Windowsバージョンのメモリエラーをチェックします。build.chromium.orgを参照して、実験的またはメモリの滝を調べ、ワインを検索してください。)

Dr. Dr. Memoryもあります。dynamorio.org/drmemory.htmlを参照してください。

30
Dan Kegel

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

15
tgs_stdio

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

14
dmityugov

私はいくつかのツールを挙げたいのですが

詳しく読む article もっと詳しく

  1. 浄化する
  2. 範囲チェッカー
  3. Coverity(基本的にはコードアナライザーですが、静的にメモリリークを検出します)
  4. グローコード
  5. dmalloc
  6. ccmalloc
  7. NJAMD
  8. ヤムド
  9. Valgrind
  10. mpatrol
  11. Insure ++
14
Satbir

試してみてください DUMA

13
Diaa Sami

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

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

12
user88930

Visual Studioと組み合わせて、私は一般的に Visual Leak Detector または単にwin32 API呼び出しである_CrtDumpMemoryLeaks()を使用します。どちらも気の利いたものではありませんが、仕事は完遂します。

8
Jasper Bekkers

私は過去に Compuware DevPartner Studio を使う機会があり、それは本当に良かったのですが、それはかなり高価です。より安価な解決策は GlowCode 、私は5.xバージョンで働いていた、そして私がデバッグする必要があるプロセスに接続する際のいくつかの問題にもかかわらず、それはかなりうまくいった。

6
Manuel

私はSoftware Verificationという会社から Memory Validator を愛しています。

6
stevex

Viusual Studioは、メモリリークを自動的に検出するのに役立ちます。 Microsoft Visual C++のヒントとテクニック - >「メモリリーク」を参照してください。これも参照してください SOへの投稿

実際のトレースはVisual StudioのTeam Edtionでのみ可能です。

5
fmuecke

同様のツールのリストについては、Software QAテストとテストツールのリソースページの " Source Test Tools "リンクを参照してください。

プロファイリングには、過去にBoundsChecker、DevPartner Studio、およびIntel V-Tuneを使用しました。私はV-Tuneが一番好きでした。あなたは様々なIntelチップセットをエミュレートすることができ、それはあなたにそのプラットフォーム用に最適化する方法についてのヒントを与えるでしょう。

4
Patrick Cuff

Jochen KalmbachのMemory Leak Detector qualifyですか?

シモンズ:最新版へのURLは記事のコメントスレッドのどこかに埋められています。

3
Agnel Kurian

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

3

Purify はどうですか?

3
grigy

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

3
zr.

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

3
Alex Budovski

GCCとMicrsoft Visual C(まだC++ではない)を処理するWindows用の Memory Safety checking tool を完成させたところで、ベータテスターを探しています。

編集2011年6月12日:もうベータ版ではなく、現在GCCとMicrosoft Visual Studio Cのプロダクション.

2
Ira Baxter

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

2
Vince

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

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

彼らはWindowsにvalgrindを移植しています。おそらく数年以内に、私たちはWindows上で信頼できるvalgrindを持つでしょう。

2
Calmarius

あなたのリストのための別のメモリツール: Memory Validator

無料ではありませんが、PurifyやBoundscheckerほど高価なものはどこにもありません。

2
Stephen Kellett

おそらくCodeSnitchはあなたが望むものでしょうか? http://www.entrek.com/codesnitch.html

2
Alex Fort

私が今まで使った中で最高のツールは DevPartner BoundsChecker - 無料ではありませんが、評価期間があります。

2
Dror Helper

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

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

GlowCode および AtromatedQA もそのような機能を含みます。彼ら全員が無料トライアルを提供しています。

ContrastのCompuware DevPartner(別名BoundsChecker)では、遅くなった "インストルメンテーション"の再コンパイルが必要です。また、エラーのチェック時にアプリケーションの実行速度が遅くなります。そしてBoundsCheckerは64ビット版では全く動作しません。私たちはその道具をあきらめた。

2
RED SOFT ADAIR

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

2
rogerdpack

"Game Programming Gems 8"という本の中の記事 ゲーム内メモリプロファイラの設計と実装 を見てください。

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

enter image description here

1
Ricky Lung

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

無料のツールDebugDiagは、メモリを見つけてリークを処理するのに役立ちます。

DebugDiagが機能するためにプログラムを強化する必要はありません。

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

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

1
Ashley Davis

この質問をチェックしてください。 Windowsに代わる良いValgrindの代替品はありますか? 。 valgrindに代わるものとして一般的なものが求められていますが、主にメモリーリーク検出機能について説明しており、競合状態検出については説明していません。

1
maykeye

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

ウィキペディアで このリスト をご覧になるといいかもしれません。

ちなみに、 memwatch が役に立つと思いました。ありがとうヨハン!

1
Rob Wells

RuntimeChecker 試用版を IBM Purify 試用版に試してみることができます。

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

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

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

1

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

私は数ヶ月前にWindows上で自分自身でそれを構築しようとしましたが、あきらめました。私の関連する question を参照してください。あなたがそれをもう一つのやり方をしたいのであれば、物事は今より良くなったかもしれません。

1
thegreendroid

私はInsure ++を使った。これはc ++のメモリリーク/破損や初期化されていない変数、ポインタエラー、文字列などの他の多くのバグを見つけるのに優れた仕事をする。あなたのコード。あなたはそれを試してみることができます。

1
Red

あなたはメモリリークに関してMozilla がしていること を読みたいかもしれません。彼らのツールボックスの1つのツールは、 メモリリークディテクタとして使用されるHans Boehmガベージコレクタです。

1
Cristian Adam

考えとしては、メモリアロケータを実装して、mallocとfreeへのすべての呼び出しを追跡することもできます。しかし、これはプロジェクトによっては多すぎるかもしれません。

0
adrian
0
Avinash

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

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

0
Wayne Ariola