web-dev-qa-db-ja.com

C / C ++アプリケーションのメモリリークを検出するために、Mac OS X Mountain LionおよびMavericksでvalgrindに代わるものはありますか?

以前は valgrind を使用して、Mac OS X 10.6(Snow Leopard)および10.7(Lion)上のC/C++アプリケーションのメモリリークを検出しましたが、最近ではサポートされていませんOSをアップグレードしたときの10.8(Mountain Lion)や10.9(Mavericks)などのリリース。 Mac OS X 10.9にインストールできるvalgrindのようなものはありますか?

41
hago

2013-11-01に valgrind チームはValgrind 3.9.0を発表しました:

http://www.valgrind.org から入手可能なValgrindの新しいリリース、バージョン3.9.0を発表します。

3.9.0は​​、多くの改善とバグ修正の通常のコレクションを備えた機能リリースです。このリリースでは、MIPS64/Linux、Intel AVX2命令、POWER8命令のサポートが追加されています。 S390にDFPサポートが追加されました。ハードウェアトランザクションメモリの初期サポートがIntelおよびPOWERプラットフォームに追加されました。 Mac OS X 10.8(Mountain Lion)のサポートが改善されました。ベクトル化されたコードのMemcheckの精度が改善されました。

改善されたMountain Lionサポートがマーベリックにとって問題なく機能することを意味するかどうかはまだ不明です。サポートは64ビットコードのみであることに言及しています。

[...時間経過...ダウンロードが発生...希望が発生...構成が試行...希望が破線...]

ほら!

...
checking build system type... x86_64-Apple-darwin13.0.0
checking Host system type... x86_64-Apple-darwin13.0.0
checking for a supported CPU... ok (x86_64)
checking for a 64-bit only build... no
checking for a 32-bit only build... no
checking for a supported OS... ok (darwin13.0.0)
checking for the kernel version... unsupported (13.0.0)
configure: error: Valgrind works on Darwin 10.x and 11.x (Mac OS X 10.6/7)

Mountain LionはDarwin 12.xに基づいています。 MavericksはDarwin 13.xに基づいています。エラーメッセージのメッセージについてはわかりませんが、Valgrind 3.9.0は​​OS X Mavericksですぐにはコンパイルされません。

12

ご存知のように、ValgrindがMac 10.9 a.k.a Maverickで動作するのを待つ必要はないかもしれません。 このバグレポート によると、ある程度の成功がありました。

現在(2013年11月15日現在)、Mac用のValgrindの代替品はないというのが私の意見です。ただし、注意が必要なものがいくつかあります。つまり、Clangの両方にAddressSanitizer(現在のmacで動作)およびMemorySanitizer(macsはまだサポートされていません)。

Xcodeのインストゥルメントを使用する提案がありますが、まったく役に立ちませんでした。

11
chutsu

@Charlie_Burnsが上記で言及したインストルメントに加えて、コードを分析するだけでこれらのことのいくつかを通知できる静的アナライザーもあります。 Xcodeプロジェクトで、[製品]メニューから[分析]を選択します。 clang静的アナライザーを呼び出します。必要であれば、コマンドラインからclangを直接使用することもできると思いますが、まだやっていません。

コマンドラインでは、leaksコマンドとdtracecommandにもアクセスできます。

7
user1118321