web-dev-qa-db-ja.com

gdbでfork()の後に子プロセスをデバッグするにはどうすればよいですか?

Forkを呼び出した後、現在のプロセスはexit(0)を呼び出します。

しかし、子供は続けます。

switch(fork())
{
  case -1:
    exit(1);
  case 0:
    //child process,continue
    break;
  default:
    //the current process,exit
    exit(0);
}

この場合、どうすれば子プロセスのデバッグを続行できますか?

26
cpuer

this を見てください。使用する:

set follow-fork-mode <mode>

Forkまたはvforkのプログラム呼び出しに対するデバッガーの応答を設定します。 forkまたはvforkを呼び出すと、新しいプロセスが作成されます。 <mode>引数は次のようになります。

parent:元のプロセスはフォーク後にデバッグされます。子プロセスは妨げられることなく実行されます。これがデフォルトです。

child:新しいプロセスはフォーク後にデバッグされます。親プロセスは妨げられることなく実行されます。

40