このレポジトリは Intelにより公開されているDBI(Dynamic Binary Instrumentation)エンジンであるPinを使ったコードカバレッジツールです。 Pinのプラグインとして動作します。
- GNU/Linux
本レポジトリをクローンしてください。
git clone git@github.com:simotin13/CodeCoverage.git
実行にはPin本体が必要になります。 Pin本体はIntel Pinのサイトからダウンロードする必要があります。
ダウンロード&ビルド、および実行例のスクリプトがこのレポジトリに含まれています。
まずは、00_setup.sh
を実行してください。
cd CodeCoverage/
./00_setup.sh
00_setup.sh
では、
Pin 3.27
をこのレポジトリと同じ階層にダウンロード・解凍しています。また、このレポジトリのソースコードをビルドします。
最新版のpinを使用する場合は、必要に応じてサイトからダウンロードしてください。
ダウンロードとビルドが完了したら、01_run_example.sh
を実行してください。
01_run_example.sh
ではこのコードカバレッジツールの実行例としてexamples/c_function_callに含まれるC言語のプログラムをカバレッジ計測対象として実行しています。
実行後 report
フォルダにカバレッジの計測結果がHTMLファイルで出力されます。
このツールをビルドする場合は
make PIN_ROOT=../pin-3.27-98718-gbeaa5d51e-gcc-linux
を実行してください。
pinのツールをビルドする際の作法として、PIN本体のディレクトリパスをPIN_ROOTで指定する必要があります。
ツールを実行する場合は
../pin-3.27-98718-gbeaa5d51e-gcc-linux/pin -t ./obj-intel64/CodeCoverage.so -- <target_module_path> <target_args...>
のようにコマンドを実行してください。
このカバレッジツールでは行番号の情報を取得するためにDWARFのデバッグ情報を利用しています。
Pin 3.27ではデバッグ情報としてDWARF4をサポートしています。カバレッジの計測対象のアプリケーションのをビルドする際は -g
オプションと -gdwarf-4
オプションをつけてビルドしてください。
例).
gcc -g -gdwarf-4 main.c