次に、その他のタイプのイベントに対するイベント仕様を説明します。
dbx がプロセスを正常に接続した直後。
dbx がプロセスを切り離す直前。
デバッグ中のプロセスが終了しようとしています。これは次の理由によって発生します。
システムコール _exit(2) が呼び出し中 (これは、明示的に呼び出されたとき、または main() のリターン時に発生します)。
終了シグナルが送信されようとするとき。
dbx コマンド kill によってプロセスが強制終了されつつあるとき。
プロセスの最終段階は、必ずではありませんが通常はこのイベントが発生したときに利用可能になり、プロセスの状態を確認することができます。このイベントのあとにプログラムの実行を再開すると、プロセスは終了します。
lastrites イベントは、Linux プラットフォームでは使用できません。
prog_gone イベントは、dbx がデバッグ中のプロセスと関連しなくなるときに発生します。事前定義済み変数 $reason に、signal、exit、kill、または detach のいずれかが設定されます。
follow exec の結果、新規のプログラムがロードされると、prog_new イベントが発生します。
このイベントのハンドラは常に存在しています。
プロセスが停止したとき。特に stop ハンドラによりユーザーがプロンプトを受け取るときのようにプロセスが停止すると、このイベントが起動します。次に例を示します。
display x when stop {print x;} |
デバッグ対象のプロセスが exec() で実行された直後。a.out で指定されたメモリーはすべて有効で存在しますが、あらかじめ読み込まれるべき共有ライブラリはまだ読み込まれていません。たとえば printf は dbx に認識されていますが、まだメモリーにはマップされていません。
stop コマンドにこのイベントを指定しても期待した結果は得られません。when コマンドに指定してください。
sync イベントは、Linux プラットフォームでは使用できません。
syncrtld イベントは、sync のあとに発生します (被デバッグ側が共有ライブラリをまだ処理していない場合は attach のあと)。すなわち、動的リンカーの起動時コードが実行され、あらかじめ読み込まれている共有ライブラリすべてのシンボルテーブルが読み込まれたあと、ただし、.init セクション内のコードがすべて実行される前に発生します。
stop コマンドにこのイベントを指定しても期待した結果は得られません。when コマンドに指定してください。
thr_create イベントは、スレッドまたは thread_id の指定されたスレッドが作成されたときに発生します。たとえば、次の stop コマンドでスレッド ID t@1 はスレッド作成を示しますが、スレッド ID t@5 は作成済みスレッドを示しています。
stop thr_create t@5 -thread t@1 |
thr_exit イベントは、スレッドが終了したときに発生します。指定したスレッドの終了を取り込むには、次のように stop コマンドで -thread オプションを使用します。
stop thr_exit -thread t@5 |
処理されない、または予期されない例外がアプリケーションから投げ出されると、throw イベントが発生します。
throw イベントは、Linux プラットフォームでは使用できません。
例外 type が throw イベントで指定されると、そのタイプの例外のみが throw イベントを発生させます。
-unhandled は、投げ出されたが、それに対するハンドラがない例外を示す、特別な例外タイプです。
-unexpected は、それを投げ出した関数の例外仕様を満たさない例外を示す、特別な例外タイプです。
デバッグ中のプログラムが seconds 間実行されると、timer イベントが発生します。このイベントで使用されるタイマーは、collector コマンドで共有されます。解像度はミリ秒であるため、秒の浮動小数点値 (0.001 など) が使用可能です。