すでに動作中のプログラムをデバッグしなければならないことがあります。実行中プロセスに接続する場合として、次のものが考えられます。
実行中のサーバーをデバッグしたいが、そのサーバーを停止または強制終了したくない場合。
グラフィカルユーザーインタフェースを備えた実行中のプログラムをデバッグしたいが、そのプログラムを再起動したくない場合。
プログラムが無限ループに入っており、そのプログラムを強制終了せずにデバッグしたい場合。
dbx を実行中のプログラムに接続するには、そのプログラムのプロセス ID 番号を dbx debug コマンドへの引数として使用します。
プログラムのデバッグを終了したら、detach コマンドを使用することにより、プロセスを終了することなくそのプログラムを dbx の制御から解放できます。
dbx を実行中プロセスに接続したあとに終了すると、dbx は、終了の前に暗黙的に切り離しを実行します。
dbx を dbx とは独立に実行されているプログラムに接続するには、attach コマンドまたは debug コマンドのどちらかを使用できます。
(dbx) debug program-name process-ID
または
(dbx) attach process-ID
プログラム名を – (ダッシュ) に置き換えることができます。dbx は、プロセス ID に関連付けられたプログラムを自動的に検索し、それをロードします。
詳細については、debug コマンドと attach コマンドを参照してください。
dbx が実行されていない場合は、次のように入力して dbx を起動します。
% dbx program-name process-id
プログラムに dbx を接続すると、そのプログラムは実行を停止します。それを、dbx にロードされた任意のプログラムと同様に調べることができます。任意のイベント管理コマンドまたはプロセス制御コマンドを使用してデバッグできます。
既存のプロセスのデバッグ中に dbx を新しいプロセスに接続すると、次のようになります。
現在デバッグ中のプロセスを run コマンドを使用して開始すると、新規のプロセスに接続する前にプロセスが終了します。
attach コマンドを使用するか、またはコマンド行でプロセス ID を指定することによって現在のプロセスのデバッグを開始した場合、dbx は、新しいプロセスに接続する前に現在のプロセスからの切り離しを実行します。
dbx を接続しようとしている先のプロセスが SIGSTOP シグナル、SIGTSTOP シグナル、SIGTTIN シグナル、または SIGTTOUT シグナルのために停止された場合、この接続は成功し、次のようなメッセージが表示されます。
dbx76: warning: Process is stopped due to signal SIGSTOP
このプロセスは検査可能ですが、それを再開するには、cont コマンドを使用してそのプロセスに SIGCONT シグナルを送信する必要があります。
(dbx) cont -sig cont
特定の例外がある接続済みプロセスで実行時チェック機能を使用できます。接続されたプロセスへの RTC の使用を参照してください。