マニュアルページ tcov.1
名前
tcov - ソースコードテストカバレージ解析用の文単位のプロ ファ
イル
形式
tcov [ -a ] [ -n ] [ -o filename ] [ -p oldpath newpath ]
[ -x dir ] files ...
機能説明
tcov は、コンパイルしたプログラムのテストカバレージ解析を 生
成 します。tcov は、引数としてソースファイルを取り、注釈付き
のソースリストを生成します。出力上、コードの各基本ブロック (
ま たは、tcov に -a オプションを指定する場合は、各行) の先頭
には、そのセグメント (行) の実行回数が示されます。また、実行
さ れ な かった行の先頭には、#### が示されます。基本ブロック
は、分岐のないコードの隣接するセクションです。基本ブロックの
各文は、同じ回数実行されます。
tcov を使用するには、プログラムは -xprofile=tcov または -xa
コンパイラオプションでコンパイルしなければなりません。
tcov カバレージ解析には 2 つの実装があります。 -xa オプ ショ
ンでコンパイルすると、オリジナルの「古いスタイルの」カバレー
ジ解析用のオブジェクトコードが準備されます。
-xprofile=tcov コンパイラオプションでコンパイルし、 tcov -x
dir オプションを使用すると、拡張された「新しいスタイルの」カ
バレージ解析が呼び出されます。
どちらの場合も、ソースファイルのコピーと (そのマージンに) 文
の実行回数が出力されます。
「古いスタイル」の tcov カバレージ解析:
-xa コンパイラオプションでプログラムをコンパイルします。これ
に よ り、 コ ン パ イ ル したソースファイルごとに、ファイル
$TCOVDIR/file.d が生成されます。環境変数 TCOVDIR を設定し て
いない場合、.d ファイルは現在のディレクトリに格納されます。
プログラムの実行。プログラムのコンパイル時に、.d ファイル は
更新されます。コンパイルが正常に終了しなければ、カバレージ解
析は生成されません。ソースファイル付きカバレージ解析を表示す
る に は、 tcov をソースファイルで実行します。コンパイルした
ソースファイルごとの注釈付 き 解 析 ファ イ ル の 名 前 は、
$TCOVDIR/file.tcov です。
tcov が生成する出力は、文または文のグループのそれぞれがそ の
実 行の中で実際に何回実行されたかを示します。tcov オプション
-a を指定すると、実行されなかった文の左側に ####-> のマー ク
が付きます。
「新しいスタイルの」拡張された tcov 解析:
tcov を使用するときは、 -xprofile=tcov でプログラムをコン パ
イルすることを推奨します。プログラムを実行するとき、カバレー
ジデータは program.profile/tcovd (program は実行可能ファイル
の 名 前) に格納されます。たとえば、実行可能ファイルが a.out
の場合、ファイル a.out.profile/tcovd が作成されます。
コンパイルとリンクを別の段階で行う場合、コンパイルとリンクで
は同じ -xprofile オプションを使用し、ld ではなく、コンパイラ
でリンクを行います。
tcov -x dir file ... を各ソースファイルで実行する と、 カ バ
レー ジ 解 析 と そ の ソー スファイルがマージされたファイル
file.tcov が現在のディレクトリに作成されます。また、 ソー ス
ファイルごとに別の .tcov ファイルも作成されます。
環境変数 SUN_PROFDATA と SUN_PROFDATA_DIR を使用すると、中間
データ収集ファイルを保存する場所を指定できます。古いスタイル
の tcov の場合、中間データ収集ファイルは *.d ファイルで、 新
し い ス タイルの tcov の場合は *.tcovd ファイルです (後述の
「環境」を参照)。
これ以降に何 回 も 実 行 す る と、 カ バ レー ジ デー タ は
program.profile/tcovd ファイルに累積されます。各オブジェクト
ファイルのデータは、再コンパイル後、最初にプログラムを実行す
るとゼロにされます。全プログラムのデータは、tcovd ファイルを
削除するとゼロにされます。
オプション
-a 各文の実行回数を表示します。 -a を指定しない場合、 コー
ド の各基本ブロックにおける先頭の文の実行回数だけが表示
されます。
-n 実行回数が最も多い n 個の文の行番号とそれぞれの実行回数
を示すテーブルを表示します。
-o filename
file.tcov の代わりにファイル名 filename へ出力 で き ま
す。 filename が "-" である場合は、file.tcov の代わりに
標準出力に出力されます。このオプションは TCOVDIR 環境変
数 に指定されたディレクトリを変更します (後述の「環境」
を参照)。
-p originalpath newpath
コンパイルした時と tcov を実行する時のソースファイル の
パ ス が 違う場合 -x オプションは混乱を招く恐れがありま
す。同じディレクトリに対してマウントするポイントが違 う
2 つのマシンを使用している場合に、この状況はよく起こり
ます。このオプションを使用すると、コンパイル時 に ori-
ginalpath で 修飾していたすべてのソースファイルを tcov
の実行時には newpath で修飾するように tcov に指示できま
す。 -p オプションは好きな数だけ指定できます。
-x dir
「新しいスタイル」の tcov カバレージ解析。ソースファ イ
ル は -xprofile=tcov コンパイラフラグでコンパイルしなけ
ればなりません。dir は、カバレージファイルが格納され る
ディ レ ク ト リ の 名 前 で す。 通 常 は、 この名前は
program.profile/ (program はコンパイルした実行可能 ファ
イルの名前) です (たとえば、a.out.profile)。
-x dir を指定しない場合、「古いスタイル」の tcov カ バ
レージが仮定されます。
使用例
古いスタイルの tcov:
demo% cc -o myprog -a alpha.c beta.c gamma.c
demo% myprog program execution
demo% tcov -a alpha.c beta.c gamma.c
demo% cat alpha.tcov beta.tcov gamma.tcov
新しい拡張された tcov:
demo% cc -o myprog -xprofile=tcov alpha.c beta.c gamma.c
demo% myprog program execution
demo% tcov -x myprog.profile alpha.c beta.c gamma.c
demo% cat alpha.c.tcov beta.c.tcov gamma.c.tcov
環境
TCOVDIR 「古いスタイル」のカバレージ解析 ( -x オプションな
し )。 コンパイル時に TCOVDIR 環境変数を設定する場
合、この環境変数は file.d ファイルが書き込まれる場
所を指定します。tcov 実行時には、file.d が存在する
場所と file.tcov カバレージ解析ファイルが書き込 ま
れる場所を指定します。ユーザーによるプログラムの実
行時には効果がありません。
「新しいスタイル」のカバレージ解析
( -x オプション付き)。次の SUN_PROFDATA_DIR と同じ
です。
SUN_PROFDATA_DIR/SUN_PROFDATA
「新しいスタイル」のカバレージ解析。これらの環境変
数 を設定する場合、tcov はパフォーマンスカバレージ
データを $SUN_PROFDATA_DIR/$SUN_PROFDATA/ に あ る
ファイルに書き込みます。
設定する場合、$SUN_PROFDATA は、program.profile の
代 わりに、tcov が読み取るディレクトリの名前として
使用されます。この場合、適切な tcov コマンドは次の
ようになります。be:
demo% tcov -x $SUN_PROFDATA source_files...
SUN_PROFDATA_DIR を設定する場合、現在のディレク ト
リ の代わりに、tcov がカバレージファイルを探すディ
レクト リ と し て 使 用 さ れ ま す。 TCOVDIR と
SUN_PROFDATA_DIR の両方を設定する場合、警告が発行
され、SUN_PROFDATA_DIR が使用されます。
ファイル
-x フラグがない場合 (古いスタイルの tcov):
file.d コンパイルされたソースファイル用にコンパ イ
ラが作成した入力テストカバレージデータファイル
file.tcov 出力テストカバレージ解析一覧ファイル
-x フラグがある場合 (新しいスタイルの tcov):
myprog.profile/tcovd 入力テストカバレー ジ デー タ
ファイル
file.c.tcov 出力テストカバレージ解析一覧ファイル (
ファイル拡張子を含む:alpha.c.tcov)
上記 SUN_PROFDATA_DIR と SUN_PROFDATA 環境変数も参
照してください。
関連項目
acc(1)、(SPARC プラッ ト フォー ム の み ) cc(1)、 CC(1)、
f77(1)、 f95(1) (SPARC プ ラッ トフォームのみ) gprof(1)、
prof(1)、 exit(2)
診断
premature end of file
文をまったく含まないルーチンが検出されると、 こ の メッ
セージが出力されます。
使用上の留意点
マルチプロセッサ/マルチスレッド化されたプログラムで tcov を
使用する場合:
-a (または -xa ) オプションでコンパイルした MP/MT プログラム
を実行すると、予想外の結果が生成されます。 -xprofile=tcov オ
プションは、MP/MT プログラムでも使用できますが、tcov の出 力
は、ゼロまたは非ゼロの値の場合だけに有効です。実行回数は正し
くありません。
基本ブロック数は、 unsigned int によって表現される値を超える
ことができません。
tcov は、#line および #file 命令を含むファイルをサポートしま
せん。
解析対象のプログラムが exit(2) を呼び出すか、正常に制御を 戻
していないと、カバレージ情報は .d ファイルに保存されません。