Oracle® Solaris 11.2 リンカーとライブラリガイド

印刷ビューの終了

更新: 2014 年 7 月
 
 

デバッガによる補助オブジェクトのアクセスと使用

デバッガおよびその他の可観測性ツールは、オブジェクトの完全なビューを作成するために、プライマリオブジェクトファイルと補助オブジェクトファイルで見つかった情報をマージする必要があります。これは、1 つのファイルの情報を処理するのとまったく同じです。このマージは、同じセクションヘッダーを含むプライマリオブジェクトと補助オブジェクト、および単一のシンボルテーブルによって簡略化されます。

デバッガでこれらのファイルに含まれる情報をまとめるには、次の手順を使用します。

  1. プライマリオブジェクトまたはいずれかの補助オブジェクトから先に、.SUNW_ancillary セクションを見つけます。このセクションが存在することで、そのオブジェクトが補助グループの一部として特定されます。このセクションには、ファイルの完全なリストを取得し、それらのどれが現在検査しているファイルかを特定するために使用できる情報が含まれています。

  2. 検査しているオブジェクトのセクションヘッダー配列を最初のテンプレートとして使用して、メモリー内にセクションヘッダー配列を作成します。

  3. .SUNW_ancillary セクションで識別された各ファイルを順に開き、読み取ります。ファイルごとに、SHF_SUNW_ABSENT フラグが設定されていない各セクションの情報をメモリー内のセクションヘッダー配列に埋め込みます。

この結果、すべてのセクションのデータへのポインタを含むセクションヘッダーの完全なメモリー内コピーができます。この情報を取得したあと、デバッガは単一ファイルの場合と同じように処理を続行し、実行中のプログラムにアクセスしてそれを制御できます。


注 -  補助オブジェクトの ELF 定義では、1 つのプライマリオブジェクトと任意の数の補助オブジェクトが提供されます。現時点では、Oracle Solaris リンカーはすべての割り当て不可のセクションを含む単一の補助オブジェクトのみを生成します。これは将来変更される可能性があります。デバッガおよびその他の可観測性ツールは、補助オブジェクトが複数存在する一般的なケースに対応できるように作成されるべきです。