Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

その他のイベント仕様

次に、その他のタイプのイベントに対するイベント仕様を説明します。

attach

dbx がプロセスを正常に接続した直後。

detach

dbx がプロセスを切り離す直前。

lastrites

デバッグ中のプロセスが終了しようとしています。これは次の理由によって発生します。

プロセスの最終段階は、必ずではありませんが通常はこのイベントが発生したときに利用可能になり、プロセスの状態を確認することができます。このイベントのあとにプログラムの実行を再開すると、プロセスは終了します。


注 –

lastrites イベントは、Linux プラットフォームでは使用できません。


proc_gone

prog_gone イベントは、dbx がデバッグ中のプロセスと関連しなくなるときに発生します。事前定義済み変数 $reason に、signalexitkill、または detach のいずれかが設定されます。

prog_new

follow exec の結果、新規のプログラムがロードされると、prog_new イベントが発生します。


注 –

このイベントのハンドラは常に存在しています。


stop

プロセスが停止したとき。特に stop ハンドラによりユーザーがプロンプトを受け取るときのようにプロセスが停止すると、このイベントが起動します。次に例を示します。


display x
when stop {print x;}

sync

デバッグ対象のプロセスが exec() で実行された直後。a.out で指定されたメモリーはすべて有効で存在しますが、あらかじめ読み込まれるべき共有ライブラリはまだ読み込まれていません。たとえば printfdbx に認識されていますが、まだメモリーにはマップされていません。

stop コマンドにこのイベントを指定しても期待した結果は得られません。when コマンドに指定してください。


注 –

sync イベントは、Linux プラットフォームでは使用できません。


syncrtld

syncrtld イベントは、sync のあとに発生します (被デバッグ側が共有ライブラリをまだ処理していない場合は attach のあと)。すなわち、動的リンカーの起動時コードが実行され、あらかじめ読み込まれている共有ライブラリすべてのシンボルテーブルが読み込まれたあと、ただし、.init セクション内のコードがすべて実行される前に発生します。

stop コマンドにこのイベントを指定しても期待した結果は得られません。when コマンドに指定してください。

thr_create [thread_id]

thr_create イベントは、スレッドまたは thread_id の指定されたスレッドが作成されたときに発生します。たとえば、次の stop コマンドでスレッド ID t@1 はスレッド作成を示しますが、スレッド ID t@5 は作成済みスレッドを示しています。


stop thr_create t@5 -thread t@1

thr_exit

thr_exit イベントは、スレッドが終了したときに発生します。指定したスレッドの終了を取り込むには、次のように stop コマンドで -thread オプションを使用します。


stop thr_exit -thread t@5

throw

処理されない、または予期されない例外がアプリケーションから投げ出されると、throw イベントが発生します。


注 –

throw イベントは、Linux プラットフォームでは使用できません。


throw type

例外 type throw イベントで指定されると、そのタイプの例外のみが throw イベントを発生させます。

throw -unhandled

-unhandled は、投げ出されたが、それに対するハンドラがない例外を示す、特別な例外タイプです。

throw -unexpected

-unexpected は、それを投げ出した関数の例外仕様を満たさない例外を示す、特別な例外タイプです。

timer seconds

デバッグ中のプログラムが seconds 間実行されると、timer イベントが発生します。このイベントで使用されるタイマーは、collector コマンドで共有されます。解像度はミリ秒であるため、の浮動小数点値 (0.001 など) が使用可能です。