Oracle® Solaris Studio 12.4: パフォーマンスアナライザ

印刷ビューの終了

更新: 2015 年 1 月
 
 

<Unknown> 関数

状況によっては、PC が既知の関数にマップされないことがあります。このような場合、その PC は <Unknown> という名前の特殊関数にマップされます。

    次の状況は、PC の <Unknown> へのマッピングを示しています。

  • C または C++ で記述された関数が動的に生成され、この関数に関する情報がコレクタ API 関数によってコレクタに提供されない場合。コレクタ API 関数の詳細については、動的な関数とモジュール参照してください。

  • Java メソッドが動的にコンパイルされるが、Java プロファイリングが無効である場合。

  • PC が実行可能ファイルまたは共有オブジェクトのデータセクション内のアドレスに対応している場合。たとえば、そのデータセクション (.mul.div など) 内に複数の関数が存在する SPARC V7 バージョンの libc.so があります。コードがデータセクションにあるため、SPARC V8 または SPARC V9 プラットフォームで動作していることをライブラリが検出したときに、動的に書き換えてマシン命令を利用できるようになります。

  • 実験ファイルに記録されない実行可能ファイルのアドレス空間内の共有オブジェクトに PC が対応する場合。

  • PC が既知のロードオブジェクト内に存在しない場合。もっとも考えられる原因は、展開に失敗して、PC 値として記録された値が PC ではなく、別のワードである場合です。PC が復帰レジスタであり、既知のどのロードオブジェクト内にも存在しないように見える場合、その PC は <Unknown>> 関数に帰属させられるのではなく、無視されます。

  • コレクタにシンボリック情報がない JVM ソフトウェアの内部部分に PC がマップしている場合。

<Unknown> 関数の呼び出し元と呼び出し先は呼び出しスタック内の前の PC と次の PC を表し、通常どおり処理されます。