# マニュアルページ 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 ファイルに保存されません。