
メモリ関連の問題を追跡する際には、どのような戦略を使用しますか? メモリ リーク、メモリ破損などを特定するために、どのようなツール (オープン ソースとプロプライエタリ) を使用しますか? システムで gdb/dbx しか使用できない場合、どのようにメモリ リークを追跡しますか?
私にとって、デバッガーだけでメモリリークを修正するのは非常に困難です。
答え1
答え2
valgrind は驚くほど役に立ちます。
答え3
マシフ(valgrind より) は、メモリ リークを見つけるための最良の方法の 1 つです。疑わしいコードを繰り返し (またはプログラムを十分に長く実行し)、ms_print で結果をダンプします。通常、コール スタックには、問題を修正するのに十分な情報が含まれています。
GDBを使用すると、実行中のプログラムにアタッチして、次のような関数を呼び出すことができます。malloc_stats()
プログラムが別の言語で書かれている場合は、より複雑になるかもしれません。最近、一部のGDBはスクリプト化が可能になり、次のような興味深いプロジェクトが始まりました。gdb ヒープは、コアダンプから Python メモリを分析できます。同様のメモリ分析スクリプトは、C++ オブジェクトでも可能かもしれません。
こちらもご覧くださいhttps://stackoverflow.com/questions/2564752/examining-cc-heap-memory-statistics-in-gdb
答え4
私はしばらく Objective-C を使ってきましたが、C レベルのメモリ管理などを扱うアナライザーがあります。Clang 静的アナライザー非常に優れているため、Apple は xCode IDE にバンドルすることを決定しました。これがあなたの質問に適しているかどうかはわかりませんが、C を使用している場合は試してみる価値があります。