JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3 Discover および Uncover ユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  概要

2.  メモリーエラー探索ツール (Discover)

3.  コードカバレッジツール (Uncover)

Uncover を使用するための要件

Uncover の使用法

バイナリの計測

計測済みバイナリの実行

カバレージレポートの生成と表示

パフォーマンスアナライザのカバレージレポートを理解する

「関数」タブ

「カバレージ外 (Uncoverage)」カウンタ

「関数カウント (Function Count)」カウンタ

「命令の実行 (Instr Exec)」カウンタ

「カバーされているブロックの割合 (%) (Block Covered %)」カウンタ

「カバーされている命令の割合 (%) (Instr Covered %)」カウンタ

「ソース」タブ

「逆アセンブリ」タブ

「命令頻度」タブ

ASCII カバレージレポートを理解する

HTML カバレージレポートを理解する

Uncover 使用時の制限事項

注釈付きコードのみ計測可能

機械命令はソースコードと異なる場合がある

例 1

例 2

例 3

索引

パフォーマンスアナライザのカバレージレポートを理解する

デフォルトでは、カバレージディレクトリ上の uncover コマンドを実行する場合、カバレージレポートが Oracle Solaris Studio パフォーマンスアナライザの実験として開かれます。アナライザは、「関数 (Functions)」、「ソース (Source)」、「逆アセンブリ (Disassembly)」、および「命令頻度 (Inst-Freq)」タブを使用して、カバレージデータを表示します。

「関数」タブ

アナライザでカバレージレポートを開くと、「関数 (Functions)」タブが選択されます。このタブには、関数ごとの「カバレージ外 (Uncoverage)」、「関数カウント (Function Count)」、「命令の実行 (Instr Exec)」、「カバーされているブロックの割合 (%) (Block Covered %)」、「カバーされている命令の割合 (%) (Instr Covered %)」カウンタを一覧表示した列が表示されます。列ヘッダーをクリックすると、どの列でもデータのソートキーとして指定できます。列ヘッダーの矢印をクリックすると、ソート順が逆になります。

image:パフォーマンスアナライザの Uncover レポートの「関数 (Functions)」タブ

「カバレージ外 (Uncoverage)」カウンタ

「カバレージ外 (Uncoverage)」メトリックは、Uncover の非常に強力な機能です。この列を降順のソートキーとして使用する場合、最上部に表示される関数は、カバレージを増やす可能性が最も高い関数です。例では、main() 関数が「カバレージ外 (Uncoverage)」列で最大数を持つため、リストの最上部に表示されます。(sigprof() および sigprofh() 関数は同数を持つため、アルファベット順に一覧表示されます。)

main() 関数のカバレージ外の数は、関数が呼び出される原因となるスイートにテストが追加される場合に潜在的にカバーされる可能性のあるコードのバイト数です。カバレージが実際に増加する量は、関数の構造によって異なります。関数に分岐がなく、呼び出すすべての関数が直線関数でもある場合、カバレージは実際には定められたバイト数により増加します。ただし、一般的に、カバレージの増加は潜在的に想定されるよりおそらくずっと少ないです。

「カバレージ外 (Uncoverage)」列の 0 以外の値を持つカバーされていない関数は、カバーされていないルート関数と呼ばれ、カバーされている関数によってすべて呼び出されることを意味します。カバーされていない非ルート関数によってのみ呼び出される関数は、独自のカバレージ外の数を持ちません。テストスイートは、潜在性の高いカバーされていない関数をカバーするように改良されるにつれて、これらの関数は、後続の実行で、カバーされるか、またはカバーされないことが明らかにされると想定されます。

カバレージ数は排他的ではありません。

「関数カウント (Function Count)」カウンタ

「関数カウント(Function Count)」は、カバーされている関数とカバーされていない関数を報告します。重要なことは数が 0 か 0 以外であるかということです。数が 0 の場合、関数はカバーされません。数が 0 以外の場合、関数はカバーされます。関数の命令が実行される場合、関数はカバーされるとみなされます。

この列で、トップレベル以外のカバーされていない関数を検出できます。ある関数の関数カウントが 0 で、カバレージ外の数も 0 である場合、関数はトップレベルのカバーされている関数ではありません。

「命令の実行 (Instr Exec)」カウンタ

「命令の実行 (Instr Exec)」カウンタは、カバーされている命令とカバーされていない命令を表示します。0 のカウントは命令が実行されないことを意味し、0 以外のカウントは命令が実行されることを意味します。

「関数 (Functions)」タブで、このカウンタは関数ごとに実行される命令の総数を表示します。このカウンタは、「ソース (Source)」タブ (「「ソース」タブ」を参照) および「逆アセンブリ (Disassembly) タブ (「「逆アセンブリ」タブ」を参照) にも表示されます。

「カバーされているブロックの割合 (%) (Block Covered %)」カウンタ

関数ごとに、「カバーされているブロックの割合 (%) (Block Covered %)」カウンタに、カバーされている関数の基本的なブロックの割合が表示されます。この数により、関数がいかに適切にカバーされているかがわかります。<Total> 行のこの数は無視してください。これは列のパーセンテージの合計であり、意味がありません。

「カバーされている命令の割合 (%) (Instr Covered %)」カウンタ

関数ごとに、「カバーされている命令の割合 (%) (Instr Covered %)」カウンタに、カバーされている関数の命令の割合が表示されます。この数によっても、関数がいかに適切にカバーされているかがわかります。<Total> 行のこの数は無視してください。これは列のパーセンテージの合計であり、意味がありません。

「ソース」タブ

バイナリを -g オプションを使用してコンパイルした場合、「ソース (Souece)」タブにはプログラムのソースコードが表示されます。Uncover はバイナリレベルでプログラムを計測し、最適化してプログラムをコンパイルしているため、このタブのカバレージ情報は解釈するのが困難な可能性があります。

「ソース (Source)」タブの「命令の実行 (Instr Exec)」カウンタには、各ソース行に対して実行される命令の総数が表示され、これは基本的に文レベルのコードカバレージ情報です。0 以外の値は、文がカバーされていることを意味します。0 の値は、文がカバーされていないことを意味します。変数宣言およびコメントには命令の実行カウントがありません。

image:パフォーマンスアナライザの Uncover レポートの「ソース (Source)」タブ

一部のソースコード行にカバレージ情報が関連付けられていない場合があります。このような場合、行は空で、どのフィールドにも数値が含まれていません。このような行は次の理由で発生します。

詳細は、「Uncover 使用時の制限事項」を参照してください。

「逆アセンブリ」タブ

「ソース (Source)」タブのある行を選択し、次に「逆アセンブリ (Disassembly)」タブを選択する場合、アナライザは、バイナリで選択した行を検出し、その逆アセンブリを表示しようとします。

このタブの「命令の実行 (Instr Exec)」カウンタには、各命令が実行される回数が表示されます。

image:パフォーマンスアナライザの Uncover レポートの「逆アセンブリ (Disassembly)」タブ

「命令頻度」タブ

「命令頻度 (Inst-Freq)」タブにはカバレージの概要全体が表示されます。

image:パフォーマンスアナライザの Uncover レポートの「命令頻度 (Inst-Freq)」タブ