dbx は、次のタイプの共有ライブラリと連動します。
プログラムの実行開始時点で暗黙的にロードされたライブラリ。
dlopen(2) を使用して明示的 (動的) にロードされたライブラリ。これらのライブラリにある名前は実行中にライブラリがロードされたあとにのみわかるため、debug または attach コマンドを使用してデバッグセッションを開始したあとに、それらにブレークポイントを配置することはできません。
dlopen(2) を使用して明示的にロードされたフィルタライブラリ。これらのライブラリにある名前は、ライブラリがロードされて、その中の最初の関数が呼び出されたあとにのみわかります。
明示的 (動的) にロードされたライブラリにブレークポイントを設定するには、次の 2 つの方法があります。
たとえば、mylibrary.so など、関数 myfunc() を含むライブラリがある場合、ライブラリの記号テーブルを dbx へプリロードし、次のようにブレークポイントを関数に設定できます。
(dbx) loadobject -load fullpathto/mylibrary.so (dbx) stop in myfunc
もっと簡単な方法は、プログラムを dbx の下で完了まで実行することです。dbx は、dlopen(2) を使用してロードされたすべての共有ライブラリを記録し、それらが dlclose() を使用して閉じられた場合でも記憶しています。そのため、プログラムの最初の実行後に、ブレークポイントを正しく設定できるようになります。
(dbx) run execution completed, exit code is 0 (dbx) loadobject -list u myprogram (primary) u /lib/libc.so.1 u p /platform/sun4u-us3/lib/libc_psr.so.1 u fullpathto/mylibrary.so (dbx) stop in myfunc