Oracle® Solaris Studio 12.4: Discover および Uncover ユーザーズガイド

印刷ビューの終了

更新: 2015 年 12 月
 
 

discover を使用するための要件

このセクションでは、discover を使用して最適な結果を得るための要件について説明します。ここで説明する内容は次のとおりです。

バイナリを適切に準備する

discover ユーティリティーは、Sun Studio 12 Update 1、Oracle Solaris Studio 12.2、Oracle Solaris Studio 12.3、または Oracle Solaris Studio 12.4 コンパイラを使用してコンパイルされたバイナリ上で機能します。Solaris 10 10/08 以上のオペレーティングシステム、Oracle Solaris 11、Oracle Enterprise Linux 5.x、または Oracle Enterprise Linux 6.x 以上を実行する SPARC ベースまたは x86 ベースのシステムで動作します。

これらの要件が満たされない場合は、discover ユーティリティーでエラーが発生したり、バイナリが計測されません。ただし、これらの要件を満たさないバイナリを計測し、–l オプションを使用して限定された数のエラーを検出することは可能です。計測オプションを参照してください。

コンパイルされたバイナリには注釈と呼ばれる情報が含まれ、discover がバイナリを正しく計測するのに役立ちます。このわずかな情報が追加されることで、バイナリのパフォーマンスまたは実行時のメモリー使用量に影響を及ぼすことはありません。

バイナリのコンパイル時に –g オプションを使用してデバッグ情報を生成すると、discover はエラーと警告を報告しながらソースコードと行番号の情報を表示して、より正確な結果を生成できます。バイナリが –g オプションを使用してコンパイルされない場合、discover には対応する機械レベルの命令のプログラムカウンタのみが表示されます。また、–g オプションを使用してコンパイルすると、discover はより正確なレポートを生成できます。discover は多くの最適化バイナリで機能しますが、–g の使用が推奨されます。詳細は、discover エラーメッセージの解釈を参照してください。

最適な結果を得るため、バイナリは最適化オプションなしで、–g オプションを付けてコンパイルしてください。最適化されたコードは、異なる変数に同じメモリーの場所を使用したり、投機的コードを生成したりするなどの最適化のため、ソースコードと異なることがあります。コンパイル時に高度な最適化オプションを使用することで、discover が正しくないエラーを報告したり、エラーを報告しなかったりする可能性があります。


注 -  discover では、標準メモリー割り当て関数 malloc()calloc()memalign()valloc()、および free() を再定義するバイナリがサポートされます。

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

プリロードまたは監査を使用するバイナリは互換性がない

discover は実行時リンカーの一部の特定の機能を使用するため、プリロードまたは監査を使用するバイナリと併用することはできません。

discover は特定のシステム関数に割り込む必要があり、関数がプリロードされている場合は割り込めないため、プログラムが LD_PRELOAD 環境変数の設定を必要とする場合、そのプログラムは discover で正しく動作しない可能性があります。

同様に、バイナリが –p オプションまたは –P オプションとリンクされているか、LD_AUDIT 環境変数を設定する必要があるために、プログラムが実行時監査を使用している場合、この監査は discover の監査の使用と競合します。バイナリが監査とリンクされている場合、discover は計測時に失敗します。実行時に LD_AUDIT 環境変数を設定している場合、結果は定義されません。