私は自分のCコーディング/デバッグがLinux専用であることを発見したとき、私はValgrindを調べていました - 私は自分のOSをLinuxに移すことに他の必要性も興味もありません。
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からのVMMap: 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
WindowsアプリケーションをデバッグするためにValgrind + Wineを使用しないのはなぜですか。 http://wiki.winehq.org/Wine_and_Valgrind を参照してください。
(Chromiumはこれを使用して、Windowsバージョンのメモリエラーをチェックします。build.chromium.orgを参照して、実験的またはメモリの滝を調べ、ワインを検索してください。)
Dr. Dr. Memoryもあります。dynamorio.org/drmemory.htmlを参照してください。
Visual C++の場合は、Visual Leak Detectorを試してください。私がそれを使ったとき、それはnew
呼び出しからメモリリークを検出し、リークのソースコードで実際の行を返しました。最新のリリースは http://vld.codeplex.com/ にあります。
使用しているWindowsの開発環境には、独自のツールが含まれている場合があります。たとえば、Visual Studioでは、プログラムで メモリリークを検出して切り離すことができます
私はいくつかのツールを挙げたいのですが
詳しく読む article もっと詳しく
試してみてください DUMA
Windows用のデバッグツールのPageheap.exe部分があります。それは無料で、基本的にカスタムメモリアロケータ/ディアロケータです。
http://support.Microsoft.com/kb/28647 を参照してください。
Visual Studioと組み合わせて、私は一般的に Visual Leak Detector または単にwin32 API呼び出しである_CrtDumpMemoryLeaks()を使用します。どちらも気の利いたものではありませんが、仕事は完遂します。
私は過去に Compuware DevPartner Studio を使う機会があり、それは本当に良かったのですが、それはかなり高価です。より安価な解決策は GlowCode 、私は5.xバージョンで働いていた、そして私がデバッグする必要があるプロセスに接続する際のいくつかの問題にもかかわらず、それはかなりうまくいった。
私はSoftware Verificationという会社から Memory Validator を愛しています。
Viusual Studioは、メモリリークを自動的に検出するのに役立ちます。 Microsoft Visual C++のヒントとテクニック - >「メモリリーク」を参照してください。これも参照してください SOへの投稿
実際のトレースはVisual StudioのTeam Edtionでのみ可能です。
同様のツールのリストについては、Software QAテストとテストツールのリソースページの " Source Test Tools "リンクを参照してください。
プロファイリングには、過去にBoundsChecker、DevPartner Studio、およびIntel V-Tuneを使用しました。私はV-Tuneが一番好きでした。あなたは様々なIntelチップセットをエミュレートすることができ、それはあなたにそのプラットフォーム用に最適化する方法についてのヒントを与えるでしょう。
Jochen KalmbachのMemory Leak Detector qualifyですか?
シモンズ:最新版へのURLは記事のコメントスレッドのどこかに埋められています。
メモリとスレッドの両方の問題を検出するのに役立つIntelのInspector XE製品を試してみてください。 http://software.intel.com/en-us/articles/intel-inspector-xe/
Purify はどうですか?
Boost Testライブラリはメモリリークを検出できます。
LeakDiag、UMDH、App Verifier、DebugDiagはすべて、コードの堅牢性を向上させ、メモリリークを見つけるための便利なツールです。
GCCとMicrsoft Visual C(まだC++ではない)を処理するWindows用の Memory Safety checking tool を完成させたところで、ベータテスターを探しています。
編集2011年6月12日:もうベータ版ではなく、現在GCCとMicrosoft Visual Studio Cのプロダクション.
Borland/CodeGear/Embarcadero C++ Builderを使用して開発している場合は、CodeGuardを使用できます。
私は今日このSFプロジェクトを見つけました:
http://sourceforge.net/p/valgrind4win/wiki/Home/
彼らはWindowsにvalgrindを移植しています。おそらく数年以内に、私たちはWindows上で信頼できるvalgrindを持つでしょう。
あなたのリストのための別のメモリツール: Memory Validator 。
無料ではありませんが、PurifyやBoundscheckerほど高価なものはどこにもありません。
おそらくCodeSnitchはあなたが望むものでしょうか? http://www.entrek.com/codesnitch.html
私が今まで使った中で最高のツールは DevPartner BoundsChecker - 無料ではありませんが、評価期間があります。
多かれ少なかれすべてのプロファイラはメモリリークのチェックを含み、メモリが割り当てられたときにあなたにスタックを表示します。
Intels Parallel Inspector をお勧めします。使い方は簡単で、再コンパイルは必要ありません。試用版は30日間実行されます。
GlowCode および AtromatedQA もそのような機能を含みます。彼ら全員が無料トライアルを提供しています。
ContrastのCompuware DevPartner(別名BoundsChecker)では、遅くなった "インストルメンテーション"の再コンパイルが必要です。また、エラーのチェック時にアプリケーションの実行速度が遅くなります。そしてBoundsCheckerは64ビット版では全く動作しません。私たちはその道具をあきらめた。
あなたがmingwを恐れていないのであれば、ここにいくつかのリンクがあります(いくつかはMSVCで動作するかもしれません)... http://betterlogic.com/roger/?p=114
"Game Programming Gems 8"という本の中の記事 ゲーム内メモリプロファイラの設計と実装 を見てください。
低オーバーヘッドの半侵入型リアルタイムメモリプロファイラー、CD-ROMで提供されているソースコードを実装する方法を示します。
ユーザーモードダンプヒープ(UMDH)ユーティリティ オペレーティングシステムと連携して、特定のプロセスに対するWindowsヒープ割り当てを分析します。これはMicrosoftから無料で入手できるかなり優れたツールです。 こちら はミニチュートリアル「メモリリークを見つけるためのUmdh.exeの使い方」です。
無料のツールDebugDiagは、メモリを見つけてリークを処理するのに役立ちます。
DebugDiagが機能するためにプログラムを強化する必要はありません。
それは使用するのが最も簡単で直感的なプログラムではありませんが!あなたがそれを使用する方法に関するチュートリアルと指示のためにあなたがグーグルをすることを確認してください。
この質問をチェックしてください。 Windowsに代わる良いValgrindの代替品はありますか? 。 valgrindに代わるものとして一般的なものが求められていますが、主にメモリーリーク検出機能について説明しており、競合状態検出については説明していません。
RuntimeChecker 試用版を IBM Purify 試用版に試してみることができます。
無料の解決策は、Visual Studioで次のコードを使用することです。
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
これをすべてのcppファイルの一番上に書いてください。これにより、デバッグ実行を停止したときにアプリケーションのメモリリークが検出され、出力ウィンドウに表示されます。メモリリーク行をダブルクリックすると、メモリが割り当てられ解放されない行が強調表示されます。これはあなたを助けるかもしれません: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml
ClangはAddress Sanitizerプラグイン(-faddress-sanitizerオプション)をサポートしています。これはValgrindが見つけることができるほとんどのバグをほとんど検出できます(まだ初期化されていないメモリ読み取りとメモリリークの検出はサポートしていません)。 Valgrindや他の似たようなツールとの比較は このページ を見てください。正式なWindowsへの移植が現在進行中です。 Windows ASan移植 を参照してください。
私は数ヶ月前にWindows上で自分自身でそれを構築しようとしましたが、あきらめました。私の関連する question を参照してください。あなたがそれをもう一つのやり方をしたいのであれば、物事は今より良くなったかもしれません。
私はInsure ++を使った。これはc ++のメモリリーク/破損や初期化されていない変数、ポインタエラー、文字列などの他の多くのバグを見つけるのに優れた仕事をする。あなたのコード。あなたはそれを試してみることができます。
あなたはメモリリークに関してMozilla がしていること を読みたいかもしれません。彼らのツールボックスの1つのツールは、 メモリリークディテクタとして使用されるHans Boehmガベージコレクタです。
考えとしては、メモリアロケータを実装して、mallocとfreeへのすべての呼び出しを追跡することもできます。しかし、これはプロジェクトによっては多すぎるかもしれません。
Parasoft Insure ++は常に信頼できます。