Recent Changes

2012-02-26
2011-12-10
2011-12-04

Latest File Release

This Project Has Not Released Any Files

Wiki Guide

Side Bar

名前

geninfo - .daファイルからトレースファイルを生成する

書式

    geninfo [-h|--help] [-v|--version] [-q|--quiet]
            [-i|--initial] [-t|--test-name test-name]
            [-o|--output-filename filename] [-f|--follow]
            [-b|--base-directory directory]
            [--checksum] [--no-checksum]
            [--compat-libtool] [--no-compat-libtool]
            [--gcov-tool tool] [--ignore-errors errors]
            [--no-recursion] directory

説明

geninfoは(genhtmlツールがHTML出力に変換できる)トレースファイルに ディレクトリにあるすべてのgcovのカバレージデータファイルを変換します。


--output-filenameオプションが指定されていない限り、geninfoは.daファイルごとに1つのファイルを出力します。 ファイル名はそれぞれの.daファイルの名前に".info"を追加しただけで生成されたものです。


現在のユーザーが両方のディレクトリにだけでなく、 元のソースコードの場所への書き込みアクセス権の必要があることに注意してください。 いくつかの一時ファイルは、変換処理中にそこに作成する必要があるため、これが必要です。


geninfoはlcovから呼び出されることにも注意してください。 そのため、geninfoは通常直接呼び出す必要はありません。


除外マーカー


トレースファイルから特定のコード行を除外するために、ソースコードに除外マーカーを追加することもできます。 除外マーカーは、例えば、コメントの形で追加できるキーワードです。


以下のマーカーがgeninfoによって認識されています:


LCOV_EXCL_LINE
このマーカーを含む行は除外されます。


LCOV_EXCL_START
除外セクションの始まりを示します。現在の行は、このセクションの一部です。


LCOV_EXCL_STOP
除外セクションの終わりを示します。現在の行は、このセクションの一部ではありません。

オプション

-b directory
--base-directory directory
相対パスの基準ディレクトリとしてdirectoryを使用します。


geninfoが次のようはエラーメッセージを出力するときに、ビルド環境の基本ディレクトリを指定するために このオプションを使用します。


ERROR: could not read source file /home/user/project/subdir1/subdir2/subdir1/subdir2/file.c


この例では、基本ディレクトリとして/home/user/projectを使用しています。


libtoolもしくは同等の基準ディレクトリで作業するビルド環境(すなわち、コンパイラーが呼び出されるときに、 現在の作業ディレクトリが、ソースコードファイルが配置されているディレクトリとは異なるディレクトリである環境)で ビルドするプロジェクト上でgeninfoを使うとき、このオプションが必要となります。


このオプションは、複数のベースディレクトリが使用されている環境では動作しないことに注意してください。 その場合には、最初のソースコードファイルを見つけることができなかったとき、 geninfoの終了を防止するためには--ignore-errorsオプションを使用し、 それぞれの基本ディレクトリに対してgeninfoを繰り返し呼び出してください。 この方法で、その後、-aオプションを使用して組み合わせることができるそれぞれの ベースディレクトリの部分的なカバレッジ情報を取得することができます。


--checksum
--no-checksum
トレースファイルを書き込むときにチェックサムデータを生成するかどうかを指定します。


チェックサムの生成を有効にするには--checksumを、無効にするには--no-checksumを使用してください。 チェックサムの生成は、デフォルトでは無効になっています。


チェックサムの生成が有効になっている場合、チェックサムは、それぞれのソースコードの行に対して生成され、 カバレッジデータとともに格納されます。このチェックサムは、異なるソースコードのバージョンから カバレッジデータを結合する試みを防止するために使用されます。


別のソースコードのバージョンで動作させない場合は、 カバレッジデータの処理を高速化するためと、トレースファイルのサイズを減らすためにこのオプションを無効にします。


--compat-libtool
--no-compat-libtool
libtoolの互換モードを有効にするかどうかを指定します。


libtoolの互換モードを有効にするには--compat-libtoolを、無効にするには--no-compat-libtoolを使用してください。 libtoolの互換モードはデフォルトで有効になっています。


libtoolの互換モードが有効になっている場合、geninfoは".libs"と名付けられたディレクトリに配置された .daファイルに関連するソースコードファイルがその親ディレクトリで見つかると想定します。


ビルド環境に".libs"という名前のディレクトリがあるが、libtoolを使用していない場合、 カバレッジデータをキャプチャする際の問題を回避するには、このオプションを無効にします。


-f
--follow
.daファイルを検索するときにリンクをたどります。


--gcov-tool tool
gcovのツールの位置を指定します。


-h
--help
短いヘルプテキストを表示して終了します。


--ignore-errors errors
処理を継続する後にエラーのリストを指定します。


geninfoが中止する代わりに処理を続行するまでのエラーの1つ以上のクラスのリストを指定するには、 このオプションを使用します。


errorsは、次のキーワードをコンマで区切って指定できます:


gcov: gcovのツールがゼロ以外のリターンコードを返しました。


source: データセットのソースコードファイルが見つかりませんでした。


-i
--initial
初期ゼロカバレッジデータをキャプチャします。


任意のテストケースを実行する前に .bb 、 .bbg もしくは .gcno ファイルをを含むディレクトリに対して このオプションを使用してgeninfoを実行します。結果は、すべての計測された行と関数のゼロカバレッジが 含まれている"ベースライン"カバレッジデータファイルです。テスト中にロードされたオブジェクトコードファイル がすべて存在するわけではない場合でも、対象となる合計行の割合が正しいことを確認するために テスト実行後にキャプチャされたカバレッジデータファイルを使用して(lcov -a を使用)、 このデータファイルを結合します。


注:現在のところ、 --initial オプションでは、分岐カバレッジ情報を生成しません。


--no-recursion
処理対象のサブディレクトリなしで、指定されたディレクトリのみに対してのカバレッジデータが欲しい場合に このオプションを使用してください。


-o output-filename
--output-filename output-filename
すべてのデータをoutput-filenameに書き込みます。


単一のファイル(扱い易い)へ書き込まれた全データが欲しい場合、それぞれのファイル名を指定するために、 このオプションを使用してください。デフォルトでは、特定のトレースファイルはそれぞれの処理された.daファイルが 作成されます。


-q
--quiet
進行状況メッセージを出力しません。


すべての情報の進行状況の出力を抑止します。このスイッチが有効になっている場合、 エラーまたは警告メッセージのみが出力されます。


-t testname
--test-name testname
結果データに対してテストケース名testnameを使用します。 有効なテストケース名は文字、小数点およびアンダースコア文字('_')で構成されます。


いくつかのテストケースからのデータがマージ(すなわち、それぞれのトレースファイルを 単に結合されることにより)されているとき有用証明します。 その場合、テスト名は、それぞれのテストケースからのデータを区別するために使用することができます。


-v
--version
バージョン番号を表示し、終了します。

ファイル

/etc/lcovrc
システム全体の設定ファイル。


~/.lcovrc
ユーザごとの設定ファイル。


以下はgenhtml、geninfoとlcovによって使用されるトレースファイル形式の簡単な説明です。


トレースファイルはセクションに分かれて、テキストのいくつかの人間が読める形式の行で構成されています。 利用可能な場合、トレースファイルはtestname(以下のフォーマットで保存されている)で始まります:


TN:<テスト名>


.daファイルで参照されるソースファイルごとに、ファイル名とカバレッジデータを含むセクションがあります:


SF:<ソースファイルへの絶対パス>


以下は、ソースファイルで見つかったそれぞれ関数名の行番号のリストです:


FN:<関数の開始行>,<関数名>


次に、それぞれの計測された関数の実行回数のリストがあります:


FNDA:<実行回数>,<関数名>


このリストは、見つかった関数とヒットした関数の数を含む二行が続きます:


FNF:<見つかった関数の数>
FNH:<ヒットした関数の数>


分岐カバレッジ情報は、分岐ごとにその一行が格納されています:


BRDA:<行番号>,<ブロック番号>,<分岐番号>,<テイクン>


ブロック番号と分岐番号は分岐用のgccの内部IDです。 テイクンはもし、分岐を含む基本ブロックが一度も実行されてなければ'-'で、そうでなければ その分岐がどのくらいの頻度行われたことを示す数値です。


分岐カバレッジの要約は、2行に保存されています:


BRF:<見つかった分岐の数>
BRH:<ヒットした分岐の数>


その後、それぞれの計測行(すなわち、実行可能コードで生じた行)に対して実行回数のリストがあります:


DA:<行番号>,<実行回数>,<チェックサム>


それぞれの計測行に対してオプションでチェックサムがある可能性があることに注意してください。 現在のgeninfoの実装では、チェックサムのアルゴリズムとしてMD5ハッシュを使用しています。


セクションの最後に、見つかった行がどれくらいか、実際にどれくらい計測されたのかの要約があります:


LH:<実行回数が0でない行の数>
LF:<計測行の数>


それぞれのセクションは以下で終わります:


end_of_record


メインソースコードファイルに加え、実行コードを含むすべての#includeファイル用のセクションがあります。


ソースファイルの絶対パスがそれぞれの.bbのファイル(このファイルタイプの詳細については、gcovの(1)を参照) の内容を解釈することにより生成されることに注意してください。 相対ファイル名は.bbのファイルがあるディレクトリで前に置かれています。


.bbのファイルへのシンボリックリンクが、 実際のファイルのパスがリンクへのパスの代わりに使用されるように解決されることにも注意してください。 この手法は、/proc/gcovのファイルを操作するためのメカニズムに必要です。

著者

Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>

関連項目

このドキュメントはlcov(英)のサイトを元に作成しました