如何在gdb中的fork()之后调试子进程?

时间:2011-06-01 09:48:52

标签: c gdb fork

调用fork后,当前进程将调用exit(0)

但孩子会继续。

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

在这种情况下,如何继续调试子进程?

1 个答案:

答案 0 :(得分:39)

看看this。使用:

set follow-fork-mode <mode>

将调试器响应设置为fork或vfork的程序调用。对fork或vfork的调用会创建一个新进程。 <mode>参数可以是:

parent:在fork之后调试原始进程。子进程运行畅通无阻。这是默认值。

child:在fork之后调试新进程。父进程运行不受阻碍。