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

Solaris プラットフォームで dbx を使用して実行中のプロセスからデータを収集する方法

Solaris プラットフォームでは、コレクタを使用して、実行中のプロセスからデータを収集できます。プロセスがすでに dbx の制御下にある場合は、プロセスを一時停止し、これまでに説明した方法を使用してデータ収集を有効にすることができます。実行中のプロセスからデータ収集を開始する操作は、Linux プラットフォームではサポートされていません。

プロセスが dbx の制御下にない場合は、collect –P pid コマンドを使用して、実行中のプロセスからデータを収集できます。詳細は、collect ユーティリティーによる動作中のプロセスからのデータの収集」を参照してください。プロセスに dbx を接続し、パフォーマンスデータを収集し、プロセスから切り離して、プロセスの実行を継続することもできます。選択した派生プロセスのパフォーマンスデータを収集するには、各プロセスに dbx を接続する必要があります。

Proceduredbx の制御下にない実行中のプロセスからデータを収集する方法

  1. プログラムのプロセス ID (PID) の判定

    コマンド行からプログラムを起動していて、バックグラウンドで実行している場合は、シェルによってその PID が標準出力に出力されます。それ以外の場合、次のコマンドを入力してプログラムの PID を判定できます。


    % ps -ef | grep program-name
    
  2. プロセスに接続します。

    dbx から、次のように入力します。


    (dbx) attach program-name pid
    

    dbx をまだ実行していない場合は、次のように入力します。


    % dbx program-name pid
    

    実行中のプロセスに接続すると、そのプロセスが一時停止します。

    プロセスへの接続についての詳細は、マニュアル『Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ』を参照してください。

  3. データの収集を開始します。

    dbx から、collector コマンドを使用してデータ収集パラメータを設定し、cont コマンドを使用してプロセスを再開します。

  4. プロセスから切り離します。

    データの収集を完了したら、プログラムを一時停止し、dbx からプロセスを切り離します。

    dbx から、次のように入力します。


    (dbx) detach
    

動作中のプロセスからのトレースデータの収集

いずれかの種類のトレースデータを収集するには、プログラムを実行する前にコレクタライブラリ libcollector.so をプリロードする必要があります。ヒープトレースデータまたは同期待ちトレースデータを収集するには、er_heap.so および er_sync.so もそれぞれプリロードする必要があります。これらのライブラリは、データ収集を実行するための実際の関数へのラッパーを提供します。また、コレクタは、ほかのシステムライブラリの呼び出しにもラッパー関数を追加し、それによって完全なパフォーマンスデータを確保できます。ライブラリをプリロードしないと、これらのラッパー関数を挿入できません。コレクタがシステムライブラリ関数に割り込む方法の詳細については、「システムライブラリの使用」を参照してください。

libcollector.so をプリロードするには、次の表に示すように、環境変数を使用してライブラリ名とライブラリへのパスを設定する必要があります。LD_PRELOAD 環境変数を使用して、ライブラリ名を設定します。ライブラリへのパスを設定するには、LD_LIBRARY_PATHLD_LIBRARY_PATH_32、または LD_LIBRARY_PATH_64 環境変数を使用しますLD_LIBRARY_PATH は、_32 および _64 バリアントが定義されていない場合に使用されます。これらの環境変数をすでに定義している場合は、新しい値を追加してください。

表 3–2 libcollector.soer_sync.so、および er_heap.so をプリロードするための環境変数設定

環境変数 

値 

LD_PRELOAD

libcollector.so

LD_PRELOAD

er_heap.so

LD_PRELOAD

er_sync.so

LD_LIBRARY_PATH

/opt/solstudio12.2/prod/lib/dbxruntime

LD_LIBRARY_PATH_32

/opt/solstudio12.2/prod/lib/dbxruntime

LD_LIBRARY_PATH_64

/opt/solstudio12.2/prod/lib/v9/dbxruntime

LD_LIBRARY_PATH_64

/opt/solstudio12.2/prod/lib/amd64/dbxruntime

Oracle Solaris Studio ソフトウェアが /opt/solstudio12.2 にインストールされていない場合は、システム管理者に正しいパスを確認してください。LD_PRELOADにフルパスを設定することもできますが、そのようにすると、SPARC V9 の 64 ビットアーキテクチャーを使用するときに問題が発生する可能性があります。


注 –

実行が終了したら、LD_PRELOADLD_LIBRARY_PATH の設定を削除し、同じシェルから起動されるほかのプログラムが設定の影響を受けないようにしてください。