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

動作中のプロセスに dbx を接続する

すでに動作中のプログラムをデバッグしなければならないことがあります。動作中のプロセスにデバッグ機能を接続しなければならないのは、次のような場合です。

このような場合は、動作中のプログラムのプロセス ID (process_id) を引数として dbx debug コマンドに渡せば、そのプログラムに dbx を接続することができます。

デバッグを終了すると、detach コマンドが使用され、プロセスを終了することなく dbx の制御からプログラムを解放することができます。

動作中のプロセスに接続されているときに dbx を終了すると、dbx は終了前に暗黙的に切り離しを行います。

dbx とは関係なく実行されるプログラムへ dbx を接続するには、attach コマンドまたは debug コマンドを使用します。

すでに実行中のプロセスへ dbx を接続するには、次のように入力します。


(dbx) debug program_name process_id

または


(dbx) attach process_id

program_name を – (ダッシュ) で置換することができます。dbx は、プロセス ID と関連するプログラムを自動的に検索し、ロードします。

詳細については、debug コマンド」attach コマンド」を参照してください。

dbx が実行中でない場合は、次のように入力して dbx を開始します。


% dbx program_name process_id

プログラムに dbx を接続すると、そのプログラムは実行を停止します。このプログラムは、dbx に読み込んだプログラムの場合と同様にして調べることができます。任意のイベント管理コマンドまたはプロセス制御コマンドを使用してデバッグできます。

既存のプロセスのデバッグ中に dbx を新規のプロセスに接続すると、次のようになります。

dbx を接続しようとしているプロセスが、SIGSTOPSIGTSTOP SIGTTINSIGTTOUT シグナルによって停止した場合、接続が成功し、次のようなメッセージが表示されます。

dbx76: warning: Process is stopped due to signal SIGSTOP

プロセスは検査可能ですが、プロセスを再開するためには、cont コマンドでプロセスに SIGCONT シグナルを送信する必要があります。


(dbx) cont -sig cont

特定の例外がある接続済みプロセスで実行時チェック機能を使用できます。「接続されたプロセスへの RTC の使用」を参照してください。