Sun WorkShop 入門

子プロセスのデバッグ

プロセスが子プロセスをフォークした場合、デバッグ対象を親プロセスのみ、子プロセスのみ、またはその両方に指定することができます。また、フォークしたプロセスからすべてのブレークポイントを削除しないように設定することもできます。

フォークしたプロセスでは、コレクタは使用できません。

実行時に常に同じデバッグ処理を行う場合、デフォルトの動作を指定しておくと、ダイアログボックスでの指定を省略できます。

フォークされるプロセスにデフォルト値を設定するには、次の手順に従ってください。

  1. 「デバッグ」ウィンドウで、「デバッグ」⇒「デバッグ用オプション」を選択します。

  2. 「カテゴリ」⇒「フォークとスレッド」を選択します。

  3. 次のいずれかのラジオボタンをクリックします。

    「親」 

    フォークされたプロセスを無視し、親プロセスをデバッグします (デフォルト)。 

    「子」 

    フォークされたプロセス (子プロセス) をデバッグします。現在のプロセスのプロセス ID は、子プロセスのプロセス ID になります。このとき、親プロセスは切り離されているようにみえますが、実際には実行を継続しています。また、子プログラムは接続されているようにみえますが、実際には一時停止しています。子プロセスを実行するには、「実行」または「ステップイン (step)」を使用します。 

    「両方」 

    子プロセスをデバッグするための第 2 のデバッグセッションを開始し、現在のセッションとします。親プロセスのデバッグセッションも、実行中プロセスとして保持されます。子プロセスは、接続されているようにみえますが、一時停止しています。 

    「ユーザーに問い合わせる」 

    フォークが検出されるたびに、親プロセスと子プロセスのいずれか一方または両方を選択するダイアログボックスが表示されます。また、デバッグごとにプログラムの状態を調べて、どのフォークプロセスをデバッグするかを選択することができます。 

  4. 「了解」をクリックして、現在のセッションに選択内容を適用するか、「デフォルトとして保存」をクリックした後「了解」をクリックして、新しいデフォルト値として保存します。

プロセスが fork() を実行するたびに、選択した処理が実行されます。

新しいフォークで別のプロセスが実行されない場合に、親プロセスのブレークポイントを子プロセスが継承できるようにするには、次の手順に従ってください。

  1. 「デバッグ」ウィンドウで、「デバッグ」⇒「デバッグ用オプション」を選択します。

  2. 「カテゴリ」⇒「フォークとスレッド」を選択します。

  3. 親プロセスのブレークポイントを継承する子プロセスのチェックボックスをクリックして、この子プロセスを有効にします。

  4. 「了解」をクリックして、現在のセッションに選択内容を適用するか、「デフォルトとして保存」をクリックした後「了解」をクリックして、選択内容を新しいデフォルト値として保存します。