1

組み込みの Linux ボックスで valgrind を実行して、メイン ソフトウェアのメモリ リークを見つけるにはどうすればよいですか?

rcSスクリプトでは、次のように実行しています。

./main_app

./main_appプログラムを valgrindに関連付けるにはどうすればよいですか? main_app プロセスは決して終了しません。

データを常にファイルに記録したい。また、プロセスを終了せずにログファイルにアクセスしたいmain_app。telnet を実行でき、ログ ファイルにアクセスできます。しかし、問題は、ハンドラーが閉じられるまで、または閉じられない限り、どのようにファイルを開くことができるかです。つまり、どの valgrind パラメーターがメモリ リークがファイルに記録されるかを制御する方法がよくわかりません。助けてください!

4

3 に答える 3

7

mips 用に独自にビルドしてみることができます。手順は次のとおりです。ここから valgrind をダウンロードしますhttp://valgrind.org/downloads/ - 私は Valgrind 3.8.1 を使用してアーカイブを valgrind で解凍し、valgrinds フォルダーに移動して実行します。

./autogen.sh
./configure --host=mipsel-linux-gnu --prefix=/home/pub/valgrind CFLAGS="-mips32r2" CC=/opt/toolchains/mips-4.3/bin/mips-linux-gnu-gcc CXX=/opt/toolchains/mips-4.3/bin/mips-linux-gnu-c++
./make -j6
./make install
  • prefix - valgrind のコンパイル済みバイナリをインストールするフォルダー。
  • CCおよびCXX - コンパイラへのパス。
  • CFLAGS - gcc (GCC) 4.5.1 より古い場合は、"-mips32r2" および "-mplt" フラグをコンパイラに渡す必要があります。

ターゲット mips ボックスで、valgrind lib フォルダーへのエクスポート パス:

export VALGRIND_LIB=/mnt/nfs/lib/valgrind

これで、通常どおり使用できます。メモリ チェック機能については、こちらを参照してくださいhttp://valgrind.org/docs/manual/mc-manual.html 私にとってはうまくいきます。

于 2013-11-01T06:47:02.010 に答える
0

Valgrind は x86 でのみ動作します。x86 用にアプリケーションをビルドし、そこで valgrind の下で実行すると、リークを突き止めることができます。問題がターゲット アーキテクチャに固有のものである可能性は低いです。

于 2013-09-05T02:20:58.857 に答える