• Showing Page History #74234

使用方法

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」をつけることをお勧めします。
  1. カウンターをリセットするために、
    lcov --directory appdir --zerocounters」 、もしくは、「lcov -d appdir -z
    (「appdir」はソースがあるディレクトリです。)
    readmeには書かれていますが、必ずしも行う必要はありません。
    これは、gcovの*.daファイルに記録されている実行カウンター(どこが何回実行されたか)を初期化しているのですが、まだ1度もプログラムを起動していなければ、カウンター値は0なので、行う必要なしです。
  1. プログラムを実行してください。
    例えば、
    ./a.out
    を実行する。
  1. ファイルに現在のカバレッジの状態をキャプチャする
    readmeには、
    lcov --directory appdir --capture --output-file app.info
    もしくは、 lcov -d appdir -c -o app.info