サーチ…


備考

GCCはここにgcovのいくつかのドキュメントを提供しています

GcovrLcovを使用してカバレッジ結果を生成して要約することができます

前書き

コードカバレッジは、各ソースコードステートメントとブランチが実行される頻度に使用される尺度です。この方法は、テストスイートを実行して、可能な限り多くのコードをテストスイートでテストするために通常必要となります。また、プロファイリング中にコードホットスポットを決定するために使用することができ、最適化の努力が最も効果的な場合があります。

GCCでは、カバレッジはgcovユーティリティによって提供されます。 gcovはgccで特定のフラグを指定してコンパイルされたコードでのみ動作します。 gcovがまったく動作する他のコンパイラはほとんどありません。

編集

gcovを使う前に、ソースコードを-fprofile-arcs-ftest-coverageの2つのフラグを使ってgccでコンパイルする必要があります。これは、gcovに必要な情報と追加のオブジェクトファイルコードを生成するようにコンパイラに指示します。

gcc -fprofile-arcs -ftest-coverage hello.c

リンクするには、 -fprofile-arcsフラグも使用する必要があります。

出力を生成する

カバレッジ情報を生成するには、コンパイルされたプログラムを実行する必要があります。テストスイートのコードカバレッジを作成するとき、この実行ステップは通常、テストスイートによって実行されるため、カバレッジはテストの実行部分と実行されない部分を示します。

$ a.out

プログラムを実行すると、オブジェクトファイルと同じディレクトリに.gcdaファイルが生成されます。

続いて、プログラムのソースファイル名を引数としてgcovを呼び出して、各行の実行頻度を示すコードのリストを生成することができます。

$ gcov hello.c
File 'hello.c'
Lines executed:90.00% of 10
Creating 'hello.c.gcov'

結果は.gcovファイルに含まれて.gcovます。ここにサンプルがあります:

         -:    0:Source:hello.c
         -:    0:Graph:hello.gcno
         -:    0:Data:hello.gcda
         -:    0:Runs:1
         -:    0:Programs:1
         -:    1:#include <stdio.h>
         -:    2:
         -:    3:int main (void)
         1:    4:{
         1:    5:  int i;
         -:    6:
         1:    7:  i = 0;
         -:    8:
         -:    9:
         1:   10:  if (i != 0)
     #####:   11:    printf ("Goodbye!\n");
         -:   12:  else
         1:   13:    printf ("Hello\n");
         1:   14:  return 0;
         -:   15:}

ここでは、行番号とソース、および各行が実行された回数を確認できます。行が実行されなかった場合、 #####でマークされ#####

実行回数は累積されます。 .gcdaファイルを削除せずにサンプルプログラムを再度実行すると、ソース内の各行が実行された回数のカウントが前の実行の結果に追加されます。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow