JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ
search filter icon
search icon

ドキュメントの情報

はじめに

1.  dbx の概要

2.  dbx の起動

3.  dbx のカスタマイズ

4.  コードの表示とコードへの移動

5.  プログラムの実行制御

6.  ブレークポイントとトレースの設定

7.  呼び出しスタックの使用

8.  データの評価と表示

9.  実行時検査

10.  修正継続機能 (fix と cont)

11.  マルチスレッドアプリケーションのデバッグ

12.  子プロセスのデバッグ

13.  OpenMP プログラムのデバッグ

14.  シグナルの処理

15.  dbx を使用してプログラムをデバッグする

16.  dbx を使用した Fortran のデバッグ

17.  dbx による Java アプリケーションのデバッグ

18.  機械命令レベルでのデバッグ

19.  dbx の Korn シェル機能

20.  共有ライブラリのデバッグ

動的リンカー

リンクマップ

起動手順と .init セクション

プロシージャリンケージテーブル

修正と継続

共有ライブラリにおけるブレークポイントの設定

明示的に読み込まれたライブラリにブレークポイントを設定する

A.  プログラム状態の変更

B.  イベント管理

C.  コマンドリファレンス

索引

動的リンカー

動的リンカーは rtld、実行時 ld、または ld.so とも呼ばれ、実行中のアプリケーションに共有オブジェクト (ロードオブジェクト) を組み込むように準備します。rtld が稼働状態になるのは主に次の 2 つの場合です。

共有オブジェクト (.so) や通常の実行可能ファイル (a.out) のことを、dbx では「ロードオブジェクト」といいます。loadobject コマンド (loadobject コマンド」参照) を使用して、読み込みオブジェクトからの記号情報のリストの作成および管理ができます。

リンクマップ

動的リンカーは、読み込んだすべてのオブジェクトのリストを、link map というリストで管理します。 このリストは、デバッグするプログラムのメモリーに保存され、librtld_db.so で間接的にアクセスできます。これはデバッガ用に用意された特別なシステムライブラリです。

起動手順と .init セクション

.init セクションは、共有オブジェクトの読み込み時に実行される、その共有オブジェクトのコードの一部分です。たとえば、.init セクションは、C++ 実行時システムが .so 内のすべての静的初期化関数を呼び出すときに使用します。

動的リンカーは最初にすべての共有オブジェクトにマップインし、それらのオブジェクトをリンクマップに登録します。その後、動的リンカーはリンクマップをトラバースし、各共有オブジェクトに対して .init セクションを実行します。syncrtld イベント (syncrtld参照) は、これら 2 つの動作の間に発生します。

プロシージャリンケージテーブル

PLT は、共有オブジェクトの境界間の呼び出しを容易にするために rtld によって使 用される構造体です。たとえば、printf の呼び出しはこの間接テーブルによって行います。その方法の詳細については、SVR4 ABI に関する汎用リファレンスマニュアルおよびプロセッサ固有のリファレンスマニュアルを参照してください。

複数の PLT 間で step コマンドと next コマンドを操作するために、dbx は各ロードオブジェクトの PLT テーブルを追跡する必要があります。テーブル情報は rtld ハンドシェークと同時に入手されます。