実行時リンカーは、メモリーへのオブジェクトの割り当てやシンボルの結合を含む多数の操作を実行します。デバッグプログラムは、通常、これらの実行時リンカーの操作をアプリケーション解析の一部として記述する情報にアクセスする必要があります。これらのデバッグプログラムは、デバッガが解析するアプリケーションから独立したプロセスとして実行されます。
このセクションでは、ほかのプロセスから動的にリンクされたアプリケーションをモニタリング、変更する「rtld-デバッガ」インタフェースについて説明します。このインタフェースのアーキテクチャーは、libc_db(3LIB) で使用されるモデルに準拠します。
「rtld-デバッガ」インタフェースを使用する場合は、少なくとも次の 2 つのプロセスが関与します。
1 つまたは複数のターゲットプロセス。ターゲットプロセスは動的にリンクし、実行時リンカー /usr/lib/ld.so.1 (32 ビットプロセスの場合)、または /usr/lib/64/ld.so.1 (64 ビットプロセスの場合) を使用する必要があります。
「制御」プロセスは、「rtld-デバッガ」インタフェースライブラリとリンクし、そのインタフェースを使用してターゲットプロセスの動的側面を検査します。64 ビット制御プロセスは、64 ビットおよび 32 ビットの両方のターゲットをデバッグできます。ただし、32 ビット制御プロセスは 32 ビットターゲットに制限されます。
「rtld-デバッガ」は、制御プロセスがデバッガであり、そのターゲットが動的実行可能なプログラムの場合に、もっともよく使用されます。
「rtld-デバッガ」インタフェースは、ターゲットプロセスに対して、次のアクティビティーを有効にします。
実行時リンカーとの最初の認識。
動的オブジェクトの読み込みと読み込み解除の通知。
読み込まれたオブジェクトすべてに関する情報の検索。
プロシージャーのリンクテーブルエントリのステップオーバー。
オブジェクトパッドの有効化。