valgrindとクロスコンパイルおよびARMでの実行の概要



Introduction Valgrind



valgrindはじめにとARMクロスコンパイルで実行

参照ブログ:https://blog.csdn.net/dengcanjun6/article/details/54958359



参照ブログ:https://blog.csdn.net/longbei9029/article/details/78626004?locationNum = 1&fps = 1

参照ブログ:https://blog.csdn.net/qq_29350001/article/details/53780697



Valgrindは、メモリデバッグ、メモリリーク検出、パフォーマンス分析のためのソフトウェア開発ツールです。に
Valgrindの原作者はJulianSewardで、Valgrindの研究で2006年に第2回Google-O’Reillyオープンソースコード賞を受賞しました。に
Valgrindは、GNU General Public Licenseの条件に準拠しており、無料のソフトウェアです。

オンラインでのvalgrindの特定の用途はたくさんあります。 ARMでのクロスコンパイルと使用プロセスにおけるいくつかの問題があります。

1.準備をダウンロードしてコンパイルします



wget http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2 tar xvf valgrind-3.12.0.tar.bz2 cd valgrind-3.12.0 sudo apt-get install automake ./autogen.sh

2.クロスコンパイル
configure:armv7 *)をarmv7 * | arm)に変更します

./configure --host=arm-linux CC=arm-none-linux-gnueabi-gcc CPP=arm-none-linux-gnueabi-cpp CXX=arm-none-linux-gnueabi-g++ --prefix=/opt/valgrind-3.12.0 make make install

/opt/valgrind-3.12.0ディレクトリの下に生成されたvalgrindには、bin、include、lib、shareの4つのフォルダーが含まれます。

--Prefix = / opt / valgrind-3.12.0指定されたディレクトリは、開発ボードに配置されたディレクトリと一致している必要があります。一致していない場合、「valgrind:プラットフォーム「arm-linux」のツール「memcheck」を起動できませんでした。 valgrindを実行しているそのようなファイルまたはディレクトリのエラー。

3.実行
インストールディレクトリのvalgrindディレクトリをtftp経由でターゲットボードにコピーします/opt/valgrind-3.12.0ディレクトリの下で、binディレクトリの下の実行権限を変更します。

chmod -R +x /opt/valgrind-3.12.0/bin/

このとき、binディレクトリでvalgrindを実行すると、次のエラーメッセージが表示されます。

valgrind: failed to start tool 'memcheck' for platform 'arm-linux': Permission denied

解決:

export VALGRIND_LIB='/opt/valgrind-3.12.0/lib/valgrind' chmod -R +x /opt/valgrind-3.12.0/lib/valgrind/

ARMのコードでメモリリークをチェックできます。

4.問題の並べ替え

1.1。エラー「valgrind:プラットフォーム「arm-linux」のツール「memcheck」を起動できませんでした:そのようなファイルまたはディレクトリはありません」が表示されます。

多くのオンラインチュートリアルでは注意が必要だと言われています。プレフィックスの背後にあるインストールディレクトリは、開発ボードのプラットフォームディレクトリと一致している必要があります。たとえば、ubuntu x64でコンパイルし、それを/opt/valgrind-3.12.0ディレクトリにインストールすると、valgrind-3.12全体がインストールされます。.0ディレクトリを開発ボードにコピーする場合は、コピーする必要があります。開発ボードの/ optディレクトリに移動します。いくつかの問題は確かに解決されるかもしれません。 しかし実際には、本質的な問題は実行ですvalgrindいつ、見つからないvalgrindlib図書館! ! !

解決策:libの下にディレクトリvalgrindがあることがわかります。このとき、開発ボードの/ etc / profileファイルに行を追加します

VALGRIND_LIB = / opt / valgrind-3.12.0 / lib / valgrindをエクスポートします

もちろん、PATH = '/ usr / bin:/ usr / sbin:/ bin:/ sbin:/ app / bin:/opt/valgrind-3.12.0/bin'で構成することもできます。黒はシステムパス構成です。 (独自のプロファイルのPATHに従って)、後ろに赤い部分を追加し、ソース/ etc / profileを実行するだけで、valgrindコマンドとして使用できます。

valgrind --tool = memcheck --leak-check = full./testを実行します

2. valgrind ls -lを実行すると、次のエラーが発生します。


上記のエラーは、UbuntuでLIBが必要なためです:libc6-dbg
実行:sudo apt-get install libc6-dbg to install libc6-dbg

その後、再度実行します:valgrind ls -l