Uncover を使用してカバレージ情報を生成するには、3 ステップのプロセスがあります。
このセクションでは、Uncover を使用する 3 つのステップと、Uncover の使用例について説明します。
入力バイナリは、実行可能ファイルまたは共有ライブラリとすることができます。個別に分析するバイナリごとに計測を行う必要があります。
uncover コマンドを使用してバイナリを計測します。たとえば、次のコマンドは、バイナリ a.out を計測し、入力の a.out を計測済みの a.out で上書きします。また、このコマンドは、接尾辞 .uc を持つディレクトリ (この場合は a.out.uc) を作成します。この中に、カバレージデータが収集されます。入力バイナリのコピーはこのディレクトリに保存されます。
$ uncover a.out
バイナリに計測機構を組み込むとき、次のオプションを使用できます。
命令、ブロック、および関数の実行カウントの報告を有効にします。デフォルトでは、カバーされているコードまたはカバーされていないコードの情報だけが報告されます。バイナリに計測機構を組み込むときとカバレージレポートを生成するときの両方で、このオプションを指定します。
directory 内にカバレージデータディレクトリを作成します。このオプションは、すべてのカバレージデータディレクトリが同じディレクトリ内に作成されているため、複数のバイナリ用のカバレージデータを収集する場合に役立ちます。また、異なる場所から同じ計測済みバイナリの異なるインスタンスを実行する場合、このオプションを使用すると、これらの実行のすべてから取得されるカバレージデータが同じカバレージデータディレクトリに確実に蓄積されるようになります。
–d オプションを使用しない場合、カバレージデータディレクトリは現在の実行ディレクトリに作成されます。
スレッドセーフなプロファイリングを有効または無効にします。デフォルトは on です。このオプションは –c 実行時オプションと組み合わせて使用します。スレッドを使用するバイナリに –m off で計測機構を組み込むと、バイナリは実行時に失敗し、バイナリに –m on で計測機構を組み込み直すよう指示するメッセージが表示されます。
指定されたファイルに計測機構付きバイナリファイルを書き込みます。デフォルトでは、入力バイナリファイルが計測機構付きファイルで上書きされます。
すでに計測されている入力バイナリ上で uncover コマンドを実行すると、uncover はすでに計測されているためバイナリを計測できないことと、そのバイナリを実行してカバレージデータを生成できることを示すエラーメッセージを発行します。
バイナリを計測したあとで、それを正常に実行できます。計測済みバイナリを実行するたびに、コードカバレージデータは、uncover が計測中に作成した .uc 接尾辞を持つカバレージデータディレクトリに収集されます。uncover のデータコレクションはマルチスレッドおよびマルチプロセスに対して安全であるため、プロセスの同時実行またはスレッド数に制限はありません。カバレージデータは実行およびスレッドのすべてにわたって蓄積されます。
カバレージレポートを生成するには、カバレージデータディレクトリ上で uncover コマンドを実行します。例:
$ uncover a.out.uc
このコマンドは、a.out.uc ディレクトリのカバレージデータから binary-name.er と呼ばれる Oracle Solaris Studio パフォーマンスアナライザ実験ディレクトリを生成し、パフォーマンスアナライザ GUI を起動して、実験を表示します。現在のディレクトリまたはホームディレクトリに .er.rc ファイルがある場合は、パフォーマンスアナライザが実験を表示する方法に影響を及ぼすことがあります。.er.rc ファイルの詳細は、Oracle Solaris Studio 12.4: パフォーマンスアナライザ を参照してください
レポートは、HTML 形式で生成して Web ブラウザに表示するか、ASCII 形式で生成して端末ウィンドウに表示できます。また、コードアナライザで分析して表示するためのディレクトリにデータを転送することもできます。
コードアナライザで使用できるように、エラーデータを binary-name.analyze/coverage ディレクトリに書き込みます。
命令、ブロック、および関数の実行カウントの報告を有効にします。デフォルトでは、カバーされているコードまたはカバーされていないコードの情報だけが報告されます。(バイナリに計測機構を組み込むときとカバレージレポートを生成するときの両方で、このオプションを指定します。)
カバレージレポート用の実験ディレクトリを生成し、パフォーマンスアナライザ GUI で実験を表示するかどうかを決定します。デフォルトは on です。
カバレージデータを指定のディレクトリに HTML 形式で保存し、それを Web ブラウザで自動的に表示します。
ヘルプを表示します。
カバレージレポートを生成しますが、パフォーマンスアナライザや Web ブラウザなどのビューアを起動しません。
指定されたファイルで ASCII カバレージレポートを生成します。
uncover バージョンを出力して終了します。
冗長。Uncover が実行する内容のログを出力します。
1 つの出力形式のみが有効になります。複数の出力オプションを指定すると、uncover はコマンド内の最後のオプションを使用します。
使用例 2 uncover コマンドの例$ uncover a.out
このコマンドは、バイナリ a.out を計測し、入力 a.out を上書きして、現作業ディレクトリに a.out.uc カバレージデータディレクトリを作成し、a.out.uc ディレクトリに入力 a.out のコピーを保存します。a.out がすでに計測されている場合、警告メッセージが表示され、計測は実行されません。
$ uncover -d coverage a.out
このコマンドは、a.out.uc カバレージディレクトリをディレクトリ coverage に作成します。
$ uncover a.out.uc
このコマンドは、a.out.uc カバレージディレクトリのデータを使用して、作業ディレクトリにコードカバレージの実験 (a.out.er) を作成し、パフォーマンスアナライザを起動してその実験を表示します。
$ uncover -H a.out.html a.out.uc
このコマンドは、a.out.uc カバレージディレクトリのデータを使用して、ディレクトリ a.out.html に HTML コードカバレージレポートを作成し、Web ブラウザにレポートを表示します。
$ uncover -t a.out.txt a.out.uc
このコマンドは、a.out.uc カバレージディレクトリのデータを使用して、ファイル a.out.txt に ASCII コードカバレージレポートを作成します。
$ uncover -a a.out.uc
このコマンドは a.out.c カバレージディレクトリ内のデータを使用して、コードアナライザで使用するためのカバレージレポートを binary-name.analyze/coverage ディレクトリ内に作成します。