2011-09-20 6 views
8

valgrindと同様に、Cプログラムでメモリリークを見つけるのに役立つツールが必要です。プログラムが(例えば、配列インデックスを誤って計算して)はならないメモリを上書きするときを把握する必要があります。グラフィカルな計測器アプリと一緒にリークユーティリティがあることを知りました。Mac OS 10.7(Lion)のツールのようなValgrind

しかし、私はそれが解放されなかった新しい(またはmalloc)で割り当てられたメモリを見つけることができ、それ以上アクセスできないと思う。また、valgrindは古いリリース(10.5と10.6)で動作するはずですが、私はライオン(10.7)を使用することを学びました。

+0

上記のように、ライオン(10.7)はまだ動作しません。 – Nils

+1

@Mat:OPが指摘しているように、ライオン(10.7)はまだサポートされていませんが、6月から働いていますが、それほど簡単ではありません:https://bugs.kde.org/show_bug.cgi?id= 275168 – Matthieu

+0

あなたのリンク@Matthieuから、それは人々がそれを働かせているように思えます。 –

答えて

4

私はXCode開発ツールを使用します。MallocDebugです。あなたは、これはあなたの/開発者フォルダまたは

にはXCodeをインストールしている必要があり、あなたはあなたができる、GDBでアプリケーションを実行し、その後

% gdb <program name> 
(gdb) set env MallocStackLoggingNoCompact 1 
(gdb) run 

を実行して、ネイティブのmallocログを使用することができます/usr/bin/leaks/usr/bin/malloc_historyを使用して明らかなリークを見つけます。

+0

誤って2つの変数を加算するのではなく、配列のアクセスで2つの変数を掛け合わせた場合にテストしました。 MallocStackLoggingNoCompactがないとbtの出力は役に立たないが、それを設定した後、それは私に正確な行を教えてくれた!ヒントのためのThx! – Nils

+0

しかし、私はMallocDebugを10.7で見つけることができませんでした。また、サメは消えています.. :( – Nils

+0

MallocDebugが 'Instruments'アプリケーションの' Leaks'機器に置き換えられたようです。 – Seth

8

Valgrind 3.7.0(リリース済み5 th 2011年11月)suライオンを助ける。 http://valgrind.org

+0

それをダウンロードしてビルドして使用するのも簡単です。 –

関連する問題