kakts-log

programming について調べたことを整理していきます

gcovによるテストカバレッジと生成されるgcovデータファイルについて

概要

gccのテストカバレッジツールであるgcovを使ったテストカバレッジ計測と、そのgcovを利用する際に生成される.gcno.gcda などのデータファイルについて簡単に整理します。

gcovとは

gcc.gnu.org

gcovとは、GCCと合わせて利用できる、テストカバレッジ計測ツールです。

gcov データファイルとは

gcovによるテストカバレッジ計測において、2種類のファイルがプロファイリングにおいて使われます。

カバレッジ計測対象の.cファイル対して、同じファイル名でサフィックス異なるファイルが生成されます。
例えば、list.c というファイルに対してのテストカバレッジ結果は、 list.gcno またはlist.gcda という2種類のファイルが生成され、これらは特定のプラットフォームに依存しない形式で保存されたカバレッジとプロファイルデータが含まれています。

.gcnoファイルはカバレッジ計測対象のファイルと同じディレクトリに生成されます。
.gcdaファイルは、デフォルトでは同様に同じディレクトリ配下に生成されますが、GCC-fprofile-dirオプションを指定すると生成先ディレクトリを変更できます。

.gcnoファイルについて

.gcno は notes file(no)を意味し 、ソースファイルが GCCftest-coverageオプションを指定してコンパイルすると生成されます。
このファイルは、基本のブロックグラフと、そのブロックに対するソースコード上の行番号を再構築するための情報を含みます。

.gcdaファイルについて

.gcda はcount data file(cda)を意味し、オブジェクトファイルを含んだソースファイルがGCC-fprofile-arcs オプションを指定してコンパイルされると生成されます。
このオプションによって、オブジェクトファイルごとに.gcdaファイルが生成されます。

このファイルは、 テスト実行における対象のコード内の分岐の遷移回数や、値のプロファイルカウント、さらにはカバレッジ結果のサマリ情報を含みます。

これらのファイルは直接アクセスすることは推奨されていません。 gcovのユーザはgcovツールが--json-formatオプションで提供される中間フォーマットを使うべきとされています。

参考情報