Windowsに適したValgrindの代替品はありますか?
-
03-07-2019 - |
質問
Cコーディング/デバッグを改善するためにValgrindを検討していましたが、Linux専用であることがわかりました。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 Performance Analysisツールは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。 Massif:
同様の(完全に一致しない)Windows用の無料ツールは次のとおりです。
sysinternalsのVMMap: http://technet.microsoft.com/en-us/ sysinternals / dd535533
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の開発環境には、独自のツールが含まれている場合があります。たとえば、Visual Studioでは、メモリを検出および分離できます。プログラムのリーク
iはいくつかのツールをリストしたいと思います。希望が役に立つでしょう
詳細については、記事をご覧ください
- 精製
- 境界チェッカー
- カバー率(基本的にはコードアナライザーですが、静的にメモリリークをキャッチします)
- グローコード
- dmalloc
- ccmalloc
- NJAMD
- YAMD
- Valgrind
- mpatrol
- Insure ++
Windowsのデバッグツールの一部であるPageheap.exeがあります。これは無料で、基本的にはカスタムメモリアロケーター/デアロケーターです。
をご覧ください。 >Visual Studioとの組み合わせでは、通常、 Visual Leak Detector または単にwin32 apiである_CrtDumpMemoryLeaks()を使用します。コール。どちらも派手なものではありませんが、仕事は完了します。
過去に Compuware DevPartner Studio を使用する機会がありました。本当に良かったのですが、かなり高価です。 より安価な解決策は GlowCode であり、5.xバージョンで作業しましたが、いくつかの問題がありますデバッグする必要のあるプロセスにアタッチすると、非常にうまく機能しました。
Softwareという会社の Memory Validator が大好きです。検証。
Viusual Studioは、メモリリークの検出に役立ちます。 Microsoft Visual C ++のヒントとコツ->を参照してください。 "メモリリーク"セクション。 こちらの SOで投稿
実際のトレースはVisual StudioのTeam Edtionでのみ可能ですが。
" ソーステストツール"をご覧ください。同様のツールのリストについては、ソフトウェアQAテストおよびテストツールリソースページのリンクをご覧ください。
プロファイリングには、過去にBoundsChecker、DevPartner StudioおよびIntel V-Tuneを使用しました。 V-Tuneが一番好きでした。さまざまなIntelチップセットをエミュレートでき、そのプラットフォーム用に最適化する方法のヒントが得られます。
Jochen Kalmbachのメモリリークディテクタは適格ですか?
PS:最新バージョンへのURLは、記事のコメントスレッドのどこかに埋め込まれています。
LeakDiag、UMDH、App Verifier、DebugDiagはすべて、コードの堅牢性を向上させ、メモリリークを見つけるための便利なツールです。
Boost Testライブラリはメモリリークを検出できます。
精製はどうですか?
メモリとスレッドの両方の問題を検出するのに役立つIntelのInspector XE製品を試してください: http://software.intel.com/en-us/articles/intel-inspector-xe/
おそらくCodeSnitchはあなたが望んでいるものでしょうか? http://www.entrek.com/codesnitch.html
Borland / CodeGear / Embarcadero C ++ Builderで開発している場合は、CodeGuardを使用できます。
多かれ少なかれ、すべてのプロファイラーにはメモリリークのチェックが含まれ、メモリが割り当てられたときのスタックが表示されます。
Intels Parallel Inspector をお勧めします。使いやすく、再コンパイルは不要です。試用版は30日間実行されます。
GlowCode および AtromatedQA にもこのような機能が含まれています。すべて無料試用版を提供しています。
ContrastのコンピュウェアDevPartner(別名BoundsChecker)では、「計測」を遅くする必要があります。再コンパイルすると、エラーのチェック時にアプリケーションの実行も遅くなります。また、BoundsCheckerは64ビットevsrionsではまったく動作しません。そのツールをあきらめました。
これまで使用した中で最高のツールは DevPartner BoundsChecker です。無料ではありませんが、評価期間があります。
リスト用の別のメモリツール:メモリ検証。
>無料ではありませんが、PurifyやBoundscheckerほど高価ではありません。
mingwを恐れていない場合、ここにいくつかのリンクがあります(一部はMSVCで動作する可能性があります)... http://betterlogic.com/roger/?p=1140
GCCおよびMicrsoft Visualを処理するWindows用のメモリー安全性チェックツールを完成させたところです。 C(まだC ++ではありません)、ベータテスターを探しています。
編集2011年6月12日:ベータ版ではなく、GCCおよびMicrosoft Visual Studio Cの本番版。
今日、このSFプロジェクトを見つけました:
http://sourceforge.net/p/valgrind4win/wiki/Home/
彼らはvalgrindをWindowsに移植しています。おそらく数年のうちに、Windowsで信頼できるvalgrindが行われるでしょう。
この質問を確認してください: Windowsに適したValgrindの代替品があります。 valgrindの一般的な代替が求められますが、主にメモリリークディテクタについて説明し、競合状態の検出については説明しません。
C ++のメモリリーク/破損や、初期化されていない変数、ポインターエラー、文字列など、その他の多くのバグを見つけるのに優れた仕事をするInsure ++を使用しました。実行時のメモリ使用量など。コードの信頼性が向上します。トレイルバージョンで試すことができます。
メモリリークに関してMozilla 何をしているを読みたいと思うかもしれません。ツールボックスのツールの1つは、メモリリークディテクタとして使用されるHans Boehmガベージコレクタです。 。
RuntimeChecker の試用を IBM Purify トライアル版。
無料の解決策は、Visual Studioで次のコードを使用することです。
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
すべてのcppファイルの先頭にこれを書くだけです。 これにより、デバッグの実行を停止するときにアプリケーションのメモリリークが検出され、出力ウィンドウに一覧表示されます。メモリリークの行をダブルクリックすると、メモリが割り当てられ、決して解放されない行が強調表示されます。これはあなたを助けるかもしれません: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml