Oracle Solaris Studio 12.4 Man Pages

印刷ビューの終了

更新: January 2015
 
 

uncover(1)

名前

uncover - コードカバレージツール

形式

uncover
     [-?]  [-h] [-c] [-d dir] [-m {on | off}]
     [-o output_binary_file] [-v] [-V] target
uncover
     [-?] [-h] [-a] [-c] [-e {on|off}] [-H dir] [-n]
     [-t file] [-v] [-V] target.uc

説明

uncover はアプリケーションのコードカバレージを測定するコマンド行ツールです。このツールは、テスト中に実行されているアプリケーションの領域に関する情報を表示できます。このツールで報告されるカバレージ情報は、関数、文、基本ブロック、または命令レベルとすることができます。

測定では、最初にバイナリが計測され、次にバイナリが実行されます。実行後、実行に基づいてカバレージデータを問い合わせることができます。複数回バイナリを実行でき、カバレージデータはこの複数の実行が蓄積したものになります。

target は、コードカバレージデータが生成されるバイナリファイルです。target.uc は、コードカバレージデータが生成および格納されるディレクトリです。

uncover は、Sun Studio 12 update 1 より前のバージョンの Studio でコンパイルされたバイナリとは互換性がありません。Solaris 10 10/08 オペレーティングシステムまたはそれ以降の Solaris 10 update または Oracle Solaris 11 を実行している、SPARC ベースシステムまたは x86 ベースシステムで機能します。

uncover は、Oracle Solaris Studio コンパイラで構築された任意のバイナリで機能しますが、最適化オプションなしで構築されたバイナリで最適に機能します。(以前のリリースの uncover では、少なくとも -O1 最適化レベルが必要でした)。バイナリが最適化オプションで構築されている場合、uncover の結果は、最適化レベルが低い場合 (-O1 または -O2) によくなります。uncover は、バイナリが -g オプションで構築されたときに生成されるデバッグ情報を使用して命令を行番号に関連付けることにより、ソース行レベルのカバレージを派生します。最適化レベル -O3 以上では、実行されることのないコードや冗長なコードがコンパイラで削除される場合があり、その結果、一部のソースコード行にはバイナリ命令が存在しないことがあります。そのような場合、それらの行に関するカバレージ情報は報告されません。

次のいずれかのコンパイラオプションを使用してコンパイルされたバイナリは、uncover と互換性がありません。-p-pg-qp、-xpg-xlinkopt

詳細は、Discover および Uncover のユーザーズガイドを参照してください。

オプション

uncover で使用できるオプションは、次のとおりです。

-?
-h

ヘルプメッセージを出力します。

-a

コードアナライザで使用するためにエラーデータを binary_name.analyze/coverage ディレクトリに書き込みます。

-c

命令、ブロック、および関数の実行カウントの報告をオンにします。デフォルトでは、カバーされているコードまたはカバーされていないコードの情報だけが報告されます。バイナリに計測機構を組み込むときとカバレージレポートを生成するときの両方で、このオプションを指定します。

-d dir

指定されたディレクトリ dir 内にカバレージデータを作成します。指定されない場合、現在の作業ディレクトリが使用されます。ディレクトリ dir の下のカバレージデータディレクトリには、target.uc という名前が付けられます。

-e {on|off}

パフォーマンスアナライザの呼び出しを有効または無効にします。デフォルトは on です。

-H dir

dir 内部で、カバレージデータを HTML 形式で表示します。指定される場合は、デフォルトブラウザが呼び出されて、dir 内に格納されているカバレージデータを表示します。

-m {on|off}

プログラムの計測時に、スレッドセーフのプロファイリングを有効または無効にします。デフォルトは on です。このオプションは -c 実行時オプションと組み合わせて使用します。スレッドを使用するバイナリに -m off で計測機構を組み込むと、バイナリは実行時に失敗し、バイナリに -m on で計測機構を組み込み直すよう指示するメッセージが表示されます。

-n

カバレージデータを表示するために GUI ビューアを起動しないでください。-n-H オプションのどちらも指定されない場合、Studio パフォーマンスアナライザが呼び出されてカバレージデータが表示されます。

-o output_binary_file

計測済みバイナリファイルを output_binary_file に書き込みます。デフォルトでは、入力バイナリファイルが計測機構付きファイルで上書きされます。

-t file

ASCII テキストのカバレージデータを file ファイル内に表示します。

-v

冗長モードをオンにして、コマンドの手順の詳細情報を表示します。

-V

現在のバージョンを出力します。

使用例 1 a.out のカバレージデータを計測、実行、および表示します。

この例は、バイナリ a.out を計測し、次にバイナリを実行し、最後にパフォーマンスアナライザを呼び出して、a.out.uc に格納された a.out のカバレージデータを表示します。

% uncover a.out
% a.out
% uncover a.out.uc

注: 対象のバイナリを一度だけ計測する必要があります。

使用例 2 カバレージデータディレクトリを生成します。

例 #1 に似ていますが、ディレクトリ abc の下にカバレージデータディレクトリ a.out.uc が生成されます。

% uncover -d abc a.out
% a.out
% uncover abc/a.out.uc
使用例 3 カバレージデータを HTML 形式で表示します。

例 #1 に似ていますが、バイナリは 3 回実行されました。表示されるカバレージデータは、HTML 形式でディレクトリ a.out.html 内に出力されます。このデータを表示するためにデフォルトブラウザが呼び出されます。

% uncover a.out
% a.out; a.out; a.out
% uncover -H a.out.html a.out.uc
使用例 4 uncover により生成された ASCII カバレージレポートの例。

次に、uncover で生成される ASCII カバレージレポートの例を示します。

 
% uncover -t unc.report a.out.uc
Creating experiment database a.out.er ...
% cat unc.report
UNCOVER Code Coverage
Total Functions: 6
Covered Functions: 3
Function Coverage: 50.0%
Total Executable Source Lines (Excludes redundant code removed by
compiler): 38
Source Line Coverage: 57.9%
Total Basic Blocks: 19
Covered Basic Blocks: 11
Basic Block Coverage: 57.9%
Total Basic Block Executions: 11
Average Executions per Basic Block: 0.58
Total Instructions: 149
Covered Instructions: 75
Instruction Coverage: 50.3%
Total Instruction Executions: 75
Average Executions per Instruction: 0.50
Number of times this program was executed: 1
Functions sorted by metric: Exclusive Uncoverage

Excl.       Excl.     Excl.  Excl.      Excl.       Name
Uncoverage  Function  Instr  Block      Instr
            Count     Exec   Covered %  Covered %
172         3         75     238        225         <Total>
 80         0          0       0          0         t3
 60         0          0       0          0         bar
 32         0          0       0          0         t2
  0         1         16      75         45         foo
  0         1         51      63         80         main
  0         1          8     100        100         t1

Instruction frequency data from experiment a.out.er

Instruction frequencies of /export/home1/uncover.demo/a.out.uc/a.out
Instruction          Executed     ()
 TOTAL                     75 (100.0)
 float ops                  0 (  0.0)
 float ld st                0 (  0.0)
 load store                12 ( 16.0)
 load                       8 ( 10.7)
 store                      4 (  5.3)
--------------------------------------
Instruction          Executed     ()        Annulled   In Delay Slot
 TOTAL                     75 (100.0)
 call                      13 ( 17.3)              0               0
 add                        9 ( 12.0)              0               5
 sethi                      9 ( 12.0)              1               3
 nop                        7 (  9.3)              0               7
 br                         6 (  8.0)              0               0
 lduw                       6 (  8.0)              0               0
 or                         5 (  6.7)              0               2
 subcc                      5 (  6.7)              0               0
 stw                        3 (  4.0)              0               0
 save                       3 (  4.0)              0               0
 jmpl                       3 (  4.0)              0               0
 restore                    3 (  4.0)              0               3
 ldsb                       2 (  2.7)              0               1
 stb                        1 (  1.3)              0               0
     ============================================================

関連項目

CC (1) , cc (1) , f95 (1) , gcc(1), g++(1)