「アナライザ」ウィンドウは、メニューバー、ツールバー、および各種データ表示のためのタブを含む分割区画で構成されます。
メニューバーには、「ファイル」メニュー、「表示」メニュー、「タイムライン」メニュー、および「ヘルプ」メニューがあります。
「ファイル」メニューでは、実験や実験グループを開いたり、追加したり、ドロップしたりできます。「ファイル」メニューでは、パフォーマンスアナライザ GUI を使って実験のデータを収集できます。パフォーマンスアナライザを使ってデータを収集する方法については、「実験の記録」を参照してください。「ファイル」メニューでは、マップファイルを作成することもできます。マップファイルを使って、実行可能ファイルのサイズを最適化したり、その実効キャッシュ動作を最適化できます。マップファイルの詳細については、「マップファイルの生成と関数の順序の変更」を参照してください。
「タイムライン」メニューは、その名前が示すとおり、タイムライン表示の操作を支援します。これについては、「アナライザデータ表示」で説明します。
「ヘルプ」メニューは、パフォーマンスアナライザのオンラインヘルプを提供します。これには、新機能の概要を示し、クイックリファレンスとショートカットの説明、およびトラブルシューティングの説明が含まれます。
ツールバーは、ショートカットとして一連のアイコンを提供します。これには、各タブ内のテキストまたは強調表示された行を見つけるのに役立つ検索機能が含まれています。検索機能の詳細については、「テキストとデータの検索」を参照してください。
パフォーマンスアナライザは、分割ウィンドウを使って、表示されるデータを 2 つの区画に分割します。各区画にはタブが付けられており、同じ実験や実験グループに対して異なるデータ表示を選択できます。
左の区画には、主要なアナライザ表示のタブが次の順序で表示されます。
「競合」タブ
「デッドロック」タブ
「関数」タブ
「呼び出し元 - 呼び出し先」タブ
「デュアルソース」タブ
「ソース/逆アセンブリ」タブ
「ソース」タブ
「行」タブ
「逆アセンブリ」タブ
「PC」タブ
「タイムライン」タブ
「リーク一覧」タブ
「データオブジェクト」タブ
「データレイアウト」タブ
「命令頻度」タブ
「統計」タブ
「実験」タブ
各種のメモリーオブジェクトのタブ
各種のインデックスオブジェクトのタブ
ターゲットを指定せずにアナライザを起動すると、開く実験を入力するプロンプトが表示されます。
デフォルトでは、表示可能な最初のタブが選択されます。表示されるタブは、読み込まれた実験内のデータに適用できるタブだけです。
実験を開いたときに「アナライザ」ウィンドウの左の区画にタブが表示されるかどうかは、アナライザを起動したときに読み込まれた .er.rc ファイル内の tabs 指令と、そのタブを実験内のデータに適用できるかどうかによって決定されます。 「データ表示方法の設定」ダイアログボックスの「タブ」タブを (「「タブ」タブ」 を参照) 使用すると、実験について表示するタブを選択できます。
「競合」タブには、データ競合実験で検出されたすべてのデータ競合のリストが表示されます。詳細は、『Sun Studio 12: Thread Analyzer User’s Guide』を参照してください。
「デッドロック」タブには、デッドロック実験で検出されたデッドロックのリストが表示されます。詳細は、『Sun Studio 12: Thread Analyzer User’s Guide』を参照してください。
「関数」タブには、関数とそのメトリックのリストが表示されます。メトリックは、実験で収集されたデータから得られます。メトリックは、排他的または包括的になります。排他的メトリックは、関数自体の中での使用を表します。包括的メトリックは、関数とその関数が呼び出したすべての関数内での使用を表します。
収集されたそれぞれの種類のデータで使用できるメトリックのリストは、collect(1) のマニュアルページを参照してください。表示されるのは、メトリックがゼロ以外の関数だけです。
時間メトリックは秒数として表示され、ミリ秒の精度で示されます。百分率は 0.01 % の精度で示されます。メトリック値が正確にゼロの場合、その時間と百分率は「0」として表示されます。値が正確にゼロではなく、精度より小さい場合、その値は「0.000」、百分率は「0.00」として表示されます。丸めのため、百分率は合計が正確に 100 % にならない場合もあります。 カウントメトリックは整数カウントとして示されます。
初めに表示されるメトリックは、収集されたデータ、および各種 .er.rc ファイルから読み取られたデフォルト設定に基づいています。パフォーマンスアナライザを最初にインストールしたときのデフォルトは、次のようになります。
ハードウェアカウンタオーバーフローのプロファイリングでは、デフォルトセットは、包括的および排他的時間 (循環カウントのカウンタの場合) またはイベントカウント (ほかのカウンタの場合) から構成されます。
複数の種類のデータが収集された場合、各種類のデフォルトのメトリックが表示されます。
表示されるメトリックは、変更または再構成できます。詳細はオンラインヘルプを参照してください。
関数を検索するには、「検索」ツールを使用します。「検索」ツールの詳細については、「テキストとデータの検索」を参照してください。
単一の関数を選択するには、その関数をクリックします。
タブ内に隣接して表示された複数の関数を選択するには、グループの最初の関数を選択したあと、Shift キーを押したままグループの最後の関数をクリックします。
タブ内に表示された隣接していない複数の関数を選択するには、グループの最初の関数を選択したあと、Ctrl キーを押したまま、追加する関数を個々にクリックして選択します。
ツールバーの「フィルタ句を構成」ボタンをクリックすると、「フィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスに「関数」タブで選択された項目を反映したフィルタ句が読み込まれます。
「呼び出し元 - 呼び出し先」タブの中央区画には選択された関数が表示され、上の区画にはその関数の呼び出し元が、下の区画には呼び出し先が表示されます。
このタブには、各関数の排他的メトリック値と包括的メトリック値のほか、属性メトリックも表示されます。選択された関数の属性メトリックは、その関数の排他的メトリックを表します。呼び出し先の場合、属性メトリックは、呼び出し先の包括的メトリックのうち、中央の関数からの呼び出しに起因する部分を示します。呼び出し先の属性メトリックと選択された関数の合計が、選択された関数の包括的メトリックになります。
呼び出し元の場合、関数の属性メトリックは、選択された関数の包括的メトリックのうち、呼び出し元からの呼び出しに起因する部分を示します。すべての呼び出し元の属性メトリックの合計が、選択された関数の包括的メトリックにもなるはずです。
「呼び出し元 - 呼び出し先」タブに表示されるメトリックは、変更または再構成できます。詳細はオンラインヘルプを参照してください。
呼び出し元または呼び出し先の区画の関数を 1 回クリックすると、その関数が選択され、ウィンドウの内容が再描画されて、選択された関数が中央区画に表示されます。
「デュアルソース」タブには、選択したデータ競合またはデッドロックに関わる 2 つのソースコンテキストが表示されます。このタブは、データ競合検出またはデッドロック実験が読み込まれている場合にのみ表示されます。
「ソース/逆アセンブリ」タブでは、上の区画に注釈付きソースが、下の区画には注釈付き逆アセンブリが表示されます。このタブはデフォルトでは表示されません。「ソース/逆アセンブリ」タブを追加するには、「表示」メニューの「データ表示方法の設定」オプションを使用します。
「ソース」タブには、選択された関数のソースコードが利用可能である場合に、そのソースコードを含むファイルが、各ソース行に対応するパフォーマンスメトリックの注釈付きで表示されます。ソースファイル、対応するオブジェクトファイル、およびロードオブジェクトの完全な名前が、ソースコードの見出しに示されます。まれに、1 つのソースファイルを使って複数のオブジェクトファイルがコンパイルされている場合は、選択された関数を含むオブジェクトファイルのパフォーマンスデータが「ソース」タブに表示されます。
アナライザは、実行可能ファイルに記録されているような絶対パス名で、選択された関数を含むファイルを探します。そのようなファイルが存在しない場合、アナライザは、現在の作業ディレクトリから同じベース名のファイルを探そうと試みます。ソースを移動した場合、また別のファイルシステムに実験が記録された場合は、注釈付きソースを表示するために、現在のディレクトリからそのソースの実際の場所へのシンボリックリンクを設定できます。
「関数」タブで関数を選択し、「ソース」タブを開いたとき、表示されるソースファイルは、その関数のデフォルトソースコンテキストです。関数のデフォルトソースコンテキストは、その関数の最初の命令 (C コードの場合は、開く中括弧) を含んでいるファイルです。注釈付きソースファイルでは、最初の命令の直後にその関数のインデックス行が追加されます。ソースウィンドウには、インデックス行が赤いイタリック体のテキストとして山括弧内に次の形式で表示されます。
<関数: f_name>
関数は、代替のソースコンテキストを持つ場合もあります。代替のソースコンテキストは、その関数に帰属する命令が入った別のファイルです。そのような命令は、インクルードファイルに入っているか、選択された関数内にインライン化された別の関数に入っている命令です。代替のソースコンテキストが存在する場合、デフォルトのソースコンテキストの先頭に、代替ソースコンテキストが置かれている場所を示す拡張インデックス行のリストが組み込まれます。
<関数: f, ソースファイル src.h から得られた命令>
別のソースコンテキストを参照するインデックス行をダブルクリックすると、そのソースコンテキストが入っているファイルが、インデックスで示された関数に関連した位置から開かれます。
移動に役立つよう、代替ソースコンテキストも、そのデフォルトソースコンテキストおよびほかの代替ソースコンテキスト内で定義された関数を逆に参照するインデックス行のリストで始まります。
ソースコードは、表示するように選択されたコンパイラのコメントとともにインタリーブされます。表示するコメントのクラスは、「データ表示方法の設定」ダイアログボックスで設定できます。デフォルトのクラスは、.er.rc デフォルト値ファイルで設定することができます。
「ソース」タブに表示されるメトリックは、変更または再構成できます。詳細はオンラインヘルプを参照してください。
ソースファイル内の任意の行のメトリックがその最大値のしきい値百分率と等しいかそれを超える行は、強調表示されるため、重要な行を容易に識別できます。しきい値は、「データ表示方法の設定」ダイアログボックスで設定できます。デフォルトのしきい値は、.er.rc デフォルト値ファイルで設定できます。ソースファイル内でしきい値を超えている行の位置に対応して、スクロールバーの横にティックマークが表示されます。たとえば、ソースファイルの末尾近くにしきい値を超えている行が 2 行ある場合は、ソースウィンドウの下部近くのスクロールバーの横に 2 つのティックマークが表示されます。ティックマークの横にスクロールバーを移動すると、それに対応するしきい値を超えた行が表示されるように、ソースウィンドウに表示されるソース行が位置付けられます。
「行」タブには、ソース行とそのメトリックのリストが表示されます。ソース行は、そのラベルとして、呼び出し元の関数、行番号、およびソースファイル名で示されます。関数の行番号情報が得られない場合、または関数のソースファイルが不明の場合は、その関数の全プログラムカウンタ (PC) が 1 つのエントリとしてまとめて表示されます。関数が非表示のロードオブジェクトにある関数の PC は、ロードオブジェクト別に「行」表示に 1 つのエントリにまとめて表示されます。「行」タブで行を選択すると、その行の全メトリックが「概要」タブに表示されます。「行」タブで行を選択してから「ソース」タブか「逆アセンブリ」タブを選択すると、適切な行に表示が位置付けられます。
「逆アセンブリ」タブには、選択した関数が入っているオブジェクトファイルの逆アセンブリリストが表示されます。各命令のパフォーマンスメトリックが注釈として付きます。
ソースコード情報が得られる場合、逆アセンブリリスト内にそのソースコードがインタリーブされて、任意のコンパイラのコメントが表示用に選択されます。「逆アセンブリ」タブでソースファイルを見つけるためのアルゴリズムは、「ソース」タブで使用されるアルゴリズムと同じです。
「ソース」タブと同様に、「逆アセンブリ」タブにはインデックス行が表示されます。しかし、「ソース」タブとは異なり、代替ソースコンテキストのインデックス行を移動の目的で直接使用することはできません。また、代替ソースコンテキストのインデックス行は、「逆アセンブリ」表示の先頭に単に一覧表示されるのではなく、#include またはインライン化されたコードの挿入位置の先頭に表示されます。#include またはほかのファイルからインライン化されたコードは、raw の逆アセンブリ命令として、ソースコードをインタリーブせずに示されます。ただし、これらの命令の 1 つにカーソルを置いて「ソース」タブを選択すると、#include またはインライン化されたコードを含むファイルが開きます。このファイルを表示した状態で「逆アセンブリ」タブを選択すると、新しいコンテキストで「逆アセンブリ」表示が開き、インタリーブされたソースコードと一緒に逆アセンブリコードが表示されます。
表示するコメントのクラスは、「データ表示方法の設定」ダイアログボックスで設定できます。デフォルトのクラスは、.er.rc デフォルト値ファイルで設定できます。
メトリックがメトリック固有のしきい値と等しいか、それを超える場合、アナライザによって行が強調表示されるため、重要な行を容易に識別できます。しきい値は、「データ表示方法の設定」ダイアログボックスで設定できます。デフォルトのしきい値は、.er.rc デフォルト値ファイルで設定できます。「ソース」タブの場合と同様に、逆アセンブリコード内のしきい値を超えている行の位置に対応して、スクロールバーの横にティックマークが表示されます。
「PC」タブには、プログラムカウンタ (PC) とそのメトリックのリストが表示されます。PC には、呼び出し元の関数、およびその関数内のオフセットが標識されます。関数が非表示のロードオブジェクトにある関数の PC は、ロードオブジェクト別に「PC」表示に 1 つのエントリにまとめて表示されます。「PC」タブで行を選択すると、その PC の全メトリックが「概要」タブに表示されます。「PC」タブで行を選択してから「ソース」タブか「逆アセンブリ」タブを選択すると、適切な行に表示が位置付けられます。
PC の詳細については、「呼び出しスタックとプログラムの実行」の節を参照してください。
「タイムライン」タブには、イベントのチャートとコレクタが記録した標本ポイントが、時間の関数として表示されます。データは、水平バーに表示されます。それぞれの実験について、標本データに対応するバーと、各 LWP に対応する一連のバーが表示されます。LWP のセットは、記録されたデータのタイプごとに 1 つのバーで構成されます。時間ベースのプロファイリング、ハードウェアカウンタオーバーフローのプロファイリング、同期トレース、ヒープトレース、MPI トレースなどがあります。
標本データを含むバーは、各標本の各マイクロステートで費やされた時間の色分け表現です。標本ポイントのデータは、そのポイントと前のポイントの間で費やされた時間を表すため、標本は時間として表示されます。標本をクリックすると、その標本のデータが「イベント」タブに表示されます。
プロファイルデータまたはトレースデータのバーには、記録される各イベントのイベントマーカーが表示されます。イベントマーカーは、イベントで記録された呼び出しスタックの色分けされた表現 (色付きの長方形が積み重ねられたもの) からなります。イベントマーカー内の色付き長方形をクリックすると、対応する関数と PC が選択され、そのイベントと関数のデータが「イベント」タブに表示されます。選択された項目は「イベント」タブと「凡例」タブの両方で強調表示され、「ソース」タブまたは「逆アセンブリ」タブを選択すると、呼び出しスタック内のそのフレームに対応する行にタブ表示が位置付けられます。
ある種のデータでは、イベントが重なって見えない場合があります。まったく同じ位置に複数のイベントが表示される場合は、常に 1 つだけが描画されます。1 〜 2 ピクセル以内に複数のイベントがある場合、すべてが描画されますが、見た目には判別できない可能性があります。いずれの場合も、描画されたイベントの下に小さな灰色のティックマークが表示され、重なっていることが示されます。
「データ表示方法の設定」ダイアログボックスの「タイムライン」タブでは、表示するイベント固有データの種類を変更したり、スレッド、LWP、または CPU に関するイベント固有データの表示を選択したり、ルートまたはリーフでの呼び出しスタックの表示の配置を選択したり、表示する呼び出しスタックのレベル数を選択したりできます。
「タイムライン」タブに表示するイベント固有データの種類や、選択された関数にマップする色も変更できます。「タイムライン」タブの使い方の詳細は、オンラインヘルプを参照してください。
「リーク一覧」タブには 2 つの行が表示され、上の行はリークを表し、下の行は割り当てを示します。それぞれには、「タイムライン」タブで表示されているものと同じような呼び出しスタックが中央に表示され、その上にはリークまたは割り当てられたバイト数に比例するバーが、その下にはリークまたは割り当ての数に比例するバーが表示されます。
リークまたは割り当てを選択すると、選択されたリークや割り当てのデータが「リーク」タブに表示され、「タイムライン」タブの場合と同様に呼び出しスタックのフレームが選択されます。
「リーク一覧」タブを表示するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブ (「「タブ」タブ」を参照) で、そのタブを選択します。「リーク一覧」タブを表示可能にできるのは、1 つ以上の読み込まれた実験の中に、ヒープトレースデータが含まれている場合だけです。
「データオブジェクト」タブには、データオブジェクトおよびそのメトリックのリストが表示されます。このタブは、積極的なバックトラッキングオプションを有効にしたハードウェアカウンタオーバーフローの実験と、C コンパイラで xhwcprof オプションを使ってコンパイルされたソースファイルにのみ適用できます。-
タブを表示するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブ (「「タブ」タブ」を参照) で、そのタブを選択します。「データオブジェクト」タブを表示可能にできるのは、1 つ以上の読み込まれた実験に、データ空間プロファイルが含まれている場合だけです。
このタブには、プログラムのさまざまなデータ構造体と変数に対するハードウェアカウンタのメモリー演算のメトリックが示されます。
単一のデータオブジェクトを選択するには、そのオブジェクトをクリックします。
タブ内に隣接して表示された複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Shift キーを押したまま最後のオブジェクトを選択します。
タブ内に表示された隣接していない複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Ctrl キーを押したまま、追加するオブジェクトを個々にクリックして選択します。
ツールバーの「フィルタ句を構成」ボタンをクリックすると、「フィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスに「データオブジェクト」タブで選択された項目を反映したフィルタ句が読み込まれます。
「データレイアウト」タブには、すべてのプログラムデータオブジェクトの注釈付きデータオブジェクトレイアウトが、データ派生メトリックデータと一緒に表示されます。各レイアウトは、構造全体のデータソートメトリック値によってソートされた状態で、タブ内に表示されます。このタブには、集合体データオブジェクトごとに、そのオブジェクトに帰属する合計メトリックが表示され、そのあとに、そのデータオブジェクトのすべての要素がオフセット順に表示されます。各要素には、そのメトリックと、32 バイトブロックでそのサイズと位置を示す指示子があります。
「データレイアウト」タブを表示するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブ (「「タブ」タブ」を参照) で、そのタブを選択します。 「データオブジェクト」タブの場合と同様に、「データレイアウト」タブを表示可能にできるのは、1 つ以上の読み込まれた実験に、データ空間プロファイルが含まれている場合だけです。
単一のデータオブジェクトを選択するには、そのオブジェクトをクリックします。
タブ内に隣接して表示された複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Shift キーを押したまま最後のオブジェクトを選択します。
タブ内に表示された隣接していない複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Ctrl キーを押したまま、追加するオブジェクトを個々にクリックして選択します。
ツールバーの「フィルタ句を構成」ボタンをクリックすると、「フィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスに「データレイアウト」タブで選択された項目を反映したフィルタ句が読み込まれます。
「命令頻度」タブには、カウントデータ実験で各種類の命令が実行された頻度の概要を示します。また、ロード、ストア、浮動小数点の各命令の実行頻度に関するデータも示します。無効になった命令や、分岐遅延スロット内の命令に関する情報も表示されます。
「統計」タブには、選択した実験と標本について集計されたさまざまなシステム統計の合計値が表示されます。合計値のあとには、それぞれの実験について選択した標本の統計値が表示されます。表示される統計値については、getrusage(3C) と proc (4) のマニュアルページを参照してください。
「実験」タブは 2 つのパネルに分割されます。上のパネルにはツリーが入っており、このツリーには、読み込まれたすべての実験に含まれるロードオブジェクトのノード、およびそれぞれの実験読み込みのノードが含まれています。「ロードオブジェクト」ノードを展開すると、すべてのロードオブジェクトのリストが、それらの処理に関するさまざまなメッセージと一緒に表示されます。実験のノードを展開すると、「注記」と「情報」という 2 つの領域が表示されます。
「注記」領域には、実験内の notes ファイルの内容が表示されます。「注記」領域に直接入力することにより、注記を編集できます。「注記」領域には独自のツールバーが組み込まれており、注記の保存や破棄のほか、前回の保存以降の編集内容の取り消しや再実行を行うためのボタンがあります。
「情報」領域には、収集した実験と収集ターゲットがアクセスしたロードオブジェクトに関する情報が入っており、それには、実験またはロードオブジェクトの処理中に出力されたエラーメッセージや警告メッセージも含まれます。
下のパネルには、アナライザセッションから出力されたエラーメッセージと警告メッセージが表示されます。
各インデックスタブには、スレッド、CPU、秒など、さまざまなインデックスオブジェクトに帰属するデータのメトリック値が表示されます。インデックスオブジェクトは階層構造ではないので、包括的メトリックと排他的メトリックは表示されません。各種類の単一のメトリックだけが表示されます。
事前定義されているいくつかのインデックスタブは、スレッド、CPU、標本、および秒です。カスタムインデックスオブジェクトを定義するには、「データ表示方法の設定」ダイアログボックスで「「カスタムインデックス」タブを追加」ボタンをクリックし、「インデックスオブジェクトを追加」ダイアログボックスを開きます。
各インデックスタブの上部のラジオボタンを使用して、テキスト表示とグラフィカル表示を切り替えることができます。テキスト表示は「データオブジェクト」タブ内の表示によく似ており、同じメトリックの設定を使用します。グラフィカル表示では、各インデックスオブジェクトの相対値が、データソートメトリックによってソートされた各メトリックごとの個別のヒストグラムを使用してグラフィカル表示されます。
ツールバーの「データをフィルタ」ボタンをクリックすると、「データをフィルタ」ダイアログボックスが開きます。「詳細」タブをクリックすると、「インデックスオブジェクト」タブで選択された項目を反映したフィルタ句が「フィルタ句」に読み込まれます。
各メモリーオブジェクトのタブには、ページなど、さまざまなメモリーオブジェクトに帰属するデータ空間メトリックのメトリック値が表示されます。1 つ以上の読み込まれた実験にデータ空間プロファイルが含まれている場合は、「データ表示方法の設定」ダイアログボックスの「タブ」タブで、タブを表示するメモリーオブジェクトを選択できます。メモリーオブジェクトタブは、いくつでも表示できます。
さまざまなメモリーオブジェクトタブが事前定義されています。カスタムメモリーオブジェクトを定義するには、「データ表示方法の設定」ダイアログボックスで「カスタムオブジェクトを追加」ボタンをクリックし、「メモリーオブジェクトを追加」ダイアログボックスを開きます。
各メモリーオブジェクトタブのラジオボタンを使用して、テキスト表示とグラフィカル表示を切り替えることができます。テキスト表示は「データオブジェクト」タブ内の表示に似ており、同じメトリックの設定を使用します。グラフィカル表示では、各メモリーオブジェクトの相対値が、データソートメトリックによってソートされた各メトリックごとの個別のヒストグラムを使用してグラフィカル表示されます。
ツールバーの「フィルタ句を構成」ボタンをクリックすると、「フィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスにメモリーオブジェクトタブで選択された項目を反映したフィルタ句が読み込まれます。
右の区画には、「概要」タブ、「イベント」タブ、「競合の詳細」タブ、「デッドロックの詳細」タブ、および「リーク」タブがあります。デフォルトでは、「概要」タブが表示されます。
「概要」タブには、選択した関数やロードオブジェクトについて記録されたすべてのメトリック (値と百分率)、および選択した関数やロードオブジェクトについての情報が表示されます。「概要」タブは、任意のタブで新しく関数やロードオブジェクトを選択するたびに更新されます。
「イベント」タブには、イベントタイプ、リーフ関数、LWP ID、スレッド ID、および CPU ID など、「タイムライン」タブで選択されたイベントに関する詳細データが表示されます。データパネルの下に、スタック内の関数ごとに色分けされて呼び出しスタックが表示されます。呼び出しスタック内の関数をクリックすると、その関数が選択されます。
「タイムライン」タブで標本を選択すると、その標本番号、標本の開始時間と終了時間、および各マイクロステートで費やされた時間を示す色別のマイクロステートが「イベント」タブに表示されます。
「リーク」タブには、「リーク一覧」タブ内で選択したリークまたは割り当ての詳細データが表示されます。「リーク」タブのデータパネルの下には、選択したリークまたは割り当てが検出されたときの呼び出しスタックが表示されます。呼び出しスタック内の関数をクリックすると、その関数が選択されます。
「競合の詳細」タブには、「競合」タブ内で選択したデータ競合の詳細データが表示されます。詳細は、『Sun Studio 12: Thread Analyzer User’s Guide』を参照してください。
「デッドロックの詳細」タブには、「デッドロック」タブ内で選択したデッドロックの詳細データが表示されます。詳細は、『Sun Studio 12: Thread Analyzer User’s Guide』を参照してください。
データの表示は、「データ表示方法の設定」ダイアログボックスで制御できます。このダイアログボックスは、ツールバーの「データ表示方法の設定」ボタンをクリックするか、「表示」->「データ表示方法の設定」を選択することで、開くことができます。
「データ表示方法の設定」ダイアログボックスには、次のタブを持つタブ区画が含まれています。
メトリック
ソート
ソース/逆アセンブリ
書式
タイムライン
検索パス
パスマップ
タブ
このダイアログボックスの「保存」ボタンを使用すると、カスタム定義したメモリーオブジェクトも含め、現在の設定を保存できます。
アナライザ、er_print ユーティリティー、および er_src ユーティリティーのデフォルト値は、共通の .er.rc ファイルによって設定されるので、アナライザの「データ表示方法の設定」ダイアログボックスでの変更を保存すると、er_print ユーティリティーおよび er_src ユーティリティーからの出力に影響します。
「メトリック」タブには、使用できるすべてのメトリックが表示されます。各メトリックの 1 つ以上の列には、メトリックの種類に応じて「時間」、「値」、および「%」というラベルの付いたチェックボックスが表示されます。別の方法として、個々のメトリックを設定する代わりに、ダイアログボックスの下部の行にある複数のチェックボックスをオンまたはオフにしてから「すべてのメトリックに適用」ボタンをクリックすることにより、すべてのメトリックを一度に設定できます。
「ソート」タブには、メトリックが表示される順序と、ソート基準のメトリックが表示されます。
「ソース/逆アセンブリ」タブには、次のような表示情報を選択するためのチェックボックスのリストが表示されます。
ソースリストと逆アセンブリリストに含めるコンパイラのコメント
ソースリストと逆アセンブリリストで重要な行を強調表示するためのしきい値
逆アセンブリリストにおけるソースコードのインタリーブ
逆アセンブリリストにおけるソース行のメトリック
逆アセンブリリストにおける 16 進での命令の表示
「書式」タブでは、C++ 関数名と Java メソッド名に、長い形式、短い形式、または符号化された形式のいずれかを使用することを選択できます。「関数名に SO 名を付加」チェックボックスをオンにすると、その関数またはメソッドを含んでいる共有オブジェクトの名前が関数名またはメソッド名に付加されます。
また、「書式」タブでは、「ユーザー」、「上級」、「マシン」のいずれかの表示モードも選択できます。「表示モード」の設定は、Java 実験と OpenMP 実験の処理を制御します。
Java 実験の場合 :
「ユーザー」モードでは、Java スレッドの Java 呼び出しスタックが表示されますが、ハウスキーピングスレッドは表示されません。
「上級」モードでは、ユーザーの Java コードの実行中には Java スレッドの Java 呼び出しスタックが表示され、JVM コードの実行中または JVM ソフトウェアが Java 呼び出しスタックを報告しないときにはマシン呼び出しスタックが表示されます。このモードでは、ハウスキーピングスレッドのマシン呼び出しスタックが表示されます。
「マシン」モードでは、すべてのスレッドのマシン呼び出しスタックが表示されます。
OpenMP 実験の場合 :
「ユーザー」モードおよび「上級」モードでは、マスタースレッド呼び出しスタックとスレーブスレッド呼び出しスタックが調整されて表示されます。また、OpenMP ランタイムが特定の操作を実行しているときは、<OMP-*> という形式の名前を持つ特殊関数が追加されます。
「マシン」モードでは、すべてのスレッドのマシン呼び出しスタックが表示されます。
それ以外のすべての実験では、3 つのモードのすべてで同じデータが表示されます。
「タイムライン」タブでは、表示するイベント固有のデータの種類を選択したり、スレッド、LWP、または CPU に関するイベント固有のデータを表示したり、ルートまたはリーフでの呼び出しスタックの表示の配置を選択したり、表示する呼び出しスタックのレベル数を選択することができます。
「パスを検索」タブでは、ソースおよびオブジェクトファイルを検索するためのディレクトリリストを管理できます。特別な名前「$expts」は読み込まれている実験を参照しており、ほかのすべての名前はファイルシステム内のパスを示しているはずです。
「パスマップ」タブでは、ファイルパスの先頭部分を別の位置にマップできます。接頭辞の組のセット、つまり元の接頭辞と新しい接頭辞を設定できます。そのあと、パスは元の接頭辞から新しい接頭辞にマップされます。パスマップは複数指定でき、ファイルの検索時にはそれぞれが順番に試されます。
「データ表示方法の設定」ダイアログボックスの「タブ」タブを使用すると、「アナライザ」ウィンドウに表示するタブを選択できます。
「タブ」タブには、現在の実験に適用できるタブが一覧表示されます。標準のタブは左の列に表示されます。インデックスタブが中央の列に表示され、定義されたメモリータブが右の列に表示されます。
左の列で各チェックボックスをクリックし、標準のタブを表示用に選択または選択解除します。
中央の列で各チェックボックスをクリックし、インデックスタブを表示用に選択または選択解除します。事前定義されているインデックスタブは、スレッド、CPU、標本、および秒です。別のインデックスオブジェクト用のタブを追加するには、「「カスタムインデックス」タブを追加」ボタンをクリックして「インデックスオブジェクトを追加」ダイアログボックスを開きます。「オブジェクト名」テキストボックスに、新しいオブジェクトの名前を入力します。「式」テキストボックスに、記録された物理アドレスまたは仮想アドレスをオブジェクトインデックスにマップするために使用するインデックス式を入力します。インデックス式の規則については、「indxobj_define indxobj_type index_exp」を参照してください。
右の列で各チェックボックスをクリックし、メモリーオブジェクトタブを表示用に選択または選択解除します。カスタムオブジェクトを追加するには、「カスタムオブジェクトを追加」ボタンをクリックして「メモリーオブジェクトを追加」ダイアログボックスを開きます。「オブジェクト名」テキストボックスに、新しいカスタムメモリーオブジェクトの名前を入力します。「式」テキストボックスに、記録された物理アドレスまたは仮想アドレスをオブジェクトインデックスへマップするために使用するインデックス式を入力します。インデックス式の規則については、「mobj_define mobj_type index_exp」を参照してください。
カスタムインデックスオブジェクトまたはメモリーオブジェクトを追加したときに、そのオブジェクトのチェックボックスが「タブ」タブに追加され、デフォルトで選択されます。
「データ表示方法の設定」ダイアログボックスの「保存」ボタンを使用して、現在の設定を保存できます。
アナライザ、er_print ユーティリティー、および er_src ユーティリティーのデフォルト値は、共通の .er.rc ファイルによって設定されるので、「データ表示方法の設定」ダイアログボックスでの変更を保存すると、er_print ユーティリティーおよび er_src ユーティリティーからの出力に影響します。