ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris Studio 12.3: dbx コマンドによるデバッグ Oracle Solaris Studio 12.3 Information Library (日本語) |
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() を使用して閉じられた場合でも保持します。そのため、プログラムを 1 度実行したあと、ブレークポイントを正常に設定できるようになります。
(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