バイナリレベルで計測するには、discover ツールを使用する必要があります。バイナリが a.out という名前の場合、次のように実行することによって、計測済みのバイナリ a.outi を作成できます。
discover -i datarace -o a.outi a.out |
discover ツールでは、開かれている共有ライブラリを、それがプログラム内で静的にリンクされているか、dlopen() によって動的に開かれているかにかかわらず、すべて自動的に計測します。デフォルトで、ライブラリの計測済みコピーは、ディレクトリ $HOME/SUNW_Bit_Cache に書き込まれます。
有効な discover コマンド行オプションの一部を次に示します。詳細は、discover(1) のマニュアルページを参照してください。
計測済みバイナリを、指定したファイル名で出力する
指定したライブラリを計測しない
どのライブラリも計測しない
キャッシュディレクトリを dir に変更する
データの競合を検出するためにプログラムのバイナリコードを計測する場合、discover ツールでは、入力バイナリを次の条件を満たしてコンパイルする必要があります。
オペレーティングシステムのバージョンが、少なくとも Oracle Solaris 10 Update 5 または OpenSolaris version snv_70 である。
コンパイラが Oracle Solaris Studio 12 Update 1 以降のリリースである。
コンパイラ最適化フラグ (-xO1、-xO2、-xO3、-xO4、-xO5) のいずれかを使用している。
データの競合の報告時にスレッドアナライザがソースコードと行番号情報を表示できるように、-g コンパイラオプションも使用する必要がある。
また、バイナリがコンパイラオプション -xbinopt=prepare を付けてコンパイルされた場合は、SPARC ベースのシステムで実行中の、以前の Solaris バージョンでも discover ツールを使用できることがあります。このコンパイラオプションについては、cc(1)、CC(1)、または f95(1) のマニュアルページを参照してください。