Show page source of usage #74234

[[PageNavi(NavigationList)]]

=== 使用方法 ===

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

 1. まず、前提条件としてgccにてコンパイルするときに、オプションに「{{{-fprofile-arcs}}}」と「{{{-ftest-coverage}}}」が指定されている必要があります。[[BR]]
 あと、リンク時に{{{-lgcov}}}の指定を忘れずに。[[BR]]
 例えば、ソースファイルが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
}}}
 で、コンパイル、リンクすることになります。[[BR]]
 そうそう、上記の例ではやっていませんが、「{{{-O0}}}」(※大文字のオーとゼロです)はつけた方がいいです。理由ですが、最適化してしまうと、うまくできないことがあるんです。なので、最適化しないよう、「{{{-O0}}}」をつけることをお勧めします。

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

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

 4. ファイルに現在のカバレッジの状態をキャプチャする[[BR]]
 [readme readme]には、[[BR]]
 {{{lcov --directory appdir --capture --output-file app.info}}}[[BR]]
 もしくは、
 {{{lcov -d appdir -c -o app.info}}}

[[PageNavi(NavigationList)]]