Linux専用であることがわかったとき、Cコーディング/デバッグを改善するためにValgrindを調査していました。OSをLinuxに移行することに他に必要も関心もないため、Windowsにも同等に優れたプログラムがあるかどうか疑問に思いました。
Linux専用であることがわかったとき、Cコーディング/デバッグを改善するためにValgrindを調査していました。OSをLinuxに移行することに他に必要も関心もないため、Windowsにも同等に優れたプログラムがあるかどうか疑問に思いました。
回答:
jakobengblom2が指摘したように、valgrindには一連のツールがあります。あなたが話しているものに応じて、異なる窓の対応部品があります。ここでは、OSSまたは無料のツールについてのみ触れます。
1. MemCheck:
メモリ博士。これは比較的新しいツールで、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. Callgrind:
私のお気に入りはとても眠いです(http://www.codersnotes.com/sleepy)小さいですが、とても便利で使いやすいです。
さらに多くの機能が必要な場合は、AMD CodeAnalyst™Performance Analyzerは無料です。 。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
!windbgのheapコマンド:http : //hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html
4. Cachegrind:
上記のWindowsパフォーマンスツールには、一定レベルのL2キャッシュミスプロファイリング機能がありますが、Cachegrindほど優れていません。
5. DRD:
Windowsではまだ何も無料で強力なものは見つかりませんでしたが、わずかに近いWindowsの唯一の無料ツールは、AppVerifierの「ロック」チェッカーです。http: //msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx
Valgrind + Wineを使用してWindowsアプリをデバッグしてみませんか?http://wiki.winehq.org/Wine_and_Valgrindを参照して ください
(Chromiumはこれを使用して、Windowsバージョンのメモリエラーをチェックします。build.chromium.orgを参照して、実験的またはメモリの滝を調べ、ワインを検索してください。)
メモリ博士もあります。dynamorio.org/ drmemory.htmlを参照してください
Visual C ++の場合は、Visual Leak Detectorを試してください。使用すると、new
呼び出しからのメモリリークが検出され、リークのソースコードに実際の行が返されました。最新のリリースはhttp://vld.codeplex.com/にあります。
Windowsのデバッグツールの一部であるPageheap.exeがあります。これは無料で、基本的にはカスタムメモリアロケータ/デアロケータです。
gflags
+ gdb
診断に役立つ(MinGWのから)。
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でのみ可能ですが。
んヨッヘンKalmbachのメモリリークディテクタは、資格?
PS:最新バージョンのURLは、記事のコメントスレッドのどこかに埋め込まれています。
LeakDiag、UMDH、App Verifier、DebugDiagはすべて、コードの堅牢性を向上させ、メモリリークを見つけるのに役立つツールです。
どの程度Purifyの?
メモリとスレッドの両方の問題を検出するのに役立つインテルのInspector XE製品を試してください:http : //software.intel.com/en-us/articles/intel-inspector-xe/
おそらく、CodeSnitchはあなたが求めているものでしょうか?http://www.entrek.com/codesnitch.html
ほぼすべてのプロファイラーにメモリリークのチェックが含まれ、メモリが割り当てられたときのスタックが表示されます。
Intels Parallel Inspectorをお勧めします。使い方は簡単で、再コンパイルは必要ありません。試用版は30日間実行されます。
GlowCodeとAtromatedQAにもそのような機能が含まれています。彼らはすべて無料の試用版を提供しています。
ContrastのCompuware DevPartner(別名BoundsChecker)は、スローダウンされた「インストルメンテーション」の再コンパイルを必要とし、エラーのチェック時にアプリケーションの実行速度も低下します。また、BoundsCheckerは64ビットのevsrionsではまったく機能しません。そのツールをあきらめました。
私が今まで使った中で最高のツールはDevPartner BoundsCheckerです。無料ではありませんが、評価期間があります。
リストのもう1つのメモリツール:メモリ検証ツール。
無料ではありませんが、PurifyやBoundscheckerほど高価ではありません。
あなたがmingwを恐れていないなら、ここにいくつかのリンクがあります(いくつかはMSVCで動作するかもしれません)... http://betterlogic.com/roger/?p=1140
GCCとMicrsoft Visual C(まだC ++ではありません)を処理するWindowsのメモリ安全性チェックツールを完成させ、ベータテスターを探しています。
編集2011年6月12日:ベータ版ではなくなりました。現在はGCCとMicrosoft Visual Studio Cの製品です。
今日このSFプロジェクトを見つけました:
http://sourceforge.net/p/valgrind4win/wiki/Home/
彼らはvalgrindをWindowsに移植しています。おそらく数年後には、Windowsに信頼性の高いvalgrindができるでしょう。
この質問を確認してください:Windowsに代わるValgrindはありますか?。valgrindの一般的な代替が求められますが、それは主にメモリリーク検出器について説明し、競合状態の検出については説明しません。
メモリリークに関してMozilla が何をしているかを読みたいと思うかもしれません。ツールボックスの1つのツールは、メモリリーク検出機能として使用されるハンスベームガベージコレクターです。
IBM PurifyトライアルにRuntimeCheckerトライアルを試すことができます。
無料の解決策は、Visual Studioで次のコードを使用することです。
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
これをすべてのcppファイルの先頭に書き込むだけです。これにより、デバッグの実行を停止したときにアプリケーションのメモリリークが検出され、出力ウィンドウに表示されます。メモリリーク行をダブルクリックすると、メモリが割り当てられ、解放されない行が強調表示されます。これはあなたを助けるかもしれません:http : //www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml