使用方法

lcovの使用方法はreadmeの「4.ユーザ空間のプログラムのカバレッジデータをアクセスする方法の例」に書かれている方法の通りなのですが、分かりにくいので、1つ1つ説明していきます。

1.前提条件

まず、前提条件としてgccにてコンパイルするときに、オプションに「-fprofile-arcs」と「-ftest-coverage」が指定されている必要があります。
あと、リンク時に-lgcovの指定を忘れずに。
例えば、ソースファイルがmain.cだとすると、通常は
gcc -g -c main.c
gcc -o a.out main.o
という感じでコンパイル、リンクするところを、
gcc -g -fprofile-arcs -ftest-coverage -c main.c
gcc -o a.out main.o -lgcov
で、コンパイル、リンクすることになります。
そうそう、上記の例ではやっていませんが、「-O0」(※大文字のオーとゼロです)はつけた方がいいです。理由ですが、最適化してしまうと、うまくできないことがあるんです。なので、最適化しないよう、「-O0」をつけることをお勧めします。

2.カウンターのリセット

カウンターをリセットするために、
lcov --directory appdir --zerocounters」 、もしくは、「lcov -d appdir -z
(「appdir」はソースがあるディレクトリです。)
readmeには書かれていますが、必ずしも行う必要はありません。
これは、gcovの*.daファイルに記録されている実行カウンター(どこが何回実行されたか)を初期化しているのですが、まだ1度もプログラムを起動していなければ、カウンター値は0なので、行う必要なしです。

3.プログラムの実行

プログラムを実行してください。
例えば、
./a.out
を実行する。

4.カバレッジの状態をキャプチャ

readmeには、
ファイルに現在のカバレッジの状態をキャプチャする
lcov --directory appdir --capture --output-file app.info
もしくは、
lcov -d appdir -c -o app.info
(「appdir」はソースがあるディレクトリ、「app.info」はトレースファイルの名前で、何でも良いです。)
を実行しろとなっています。これは、やってください。

5.HTML出力

readmeには
HTML出力の取得
genhtml app.info
(「app.info」は4番で指定したトレースファイル名前です。)
を実行するように書かれています。これも行ってください。

6.結果を見る

ファイルがいろいろ出来るので、index.htmlを適当なブラウザ(Firefoxなど)で開きましょう。

参考資料など