dbx コマンドによるデバッグ

動的にリンクされたライブラリにブレークポイントを設定する

実行時リンカーとの間でプログラムインタフェースを使用するコード、すなわち dlopen()dlclose()、およびそれらに関連する関数を呼び出すコードをデバッグするときは、デバッガの全機能を利用できます。実行時リンカーは、プログラムの実行中に共有ライブラリをリンクしたり、そのリンクを解除したりします。dlopen()dlclose() のサポートにより、動的にリンクされている共有ライブラリの関数もプログラムの起動時にリンクされたライブラリの関数と同様に、ステップ実行したり、ブレークポイントを設定したりできます。

3 つの例外

  1. dlopen されたライブラリが dlopen() によって読み込まれる前に、そのライブラリにブレークポイントを設定することはできません。

  2. dlopen されたフィルタライブラリ内の最初の関数が呼び出されるまで、フィルタライブラリにブレークポイントを設定することはできません。

  3. ライブラリが dlopen() によって読み込まれるとき、_init() という名前の初期化ルーチンが呼び出されます。このルーチンは、ライブラリ内のほかのルーチンを呼び出すことがあります。この初期化が終わるまで、dbx は読み込まれたライブラリにブレークポイントを置くことができません。具体的に言うと、dlopen によって読み込まれたライブラリの _init()内dbx を停止させることはできません。