Search code examples
cgdbfork

How do I debug the child process after fork() in gdb?


After calling fork, the current process will call exit(0).

But the child will continue.

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

How can I continue debugging the child process in this case?


Solution

  • Look at this. Use:

    set follow-fork-mode <mode>
    

    Set the debugger response to a program call of fork or vfork. A call to fork or vfork creates a new process. The <mode> argument can be:

    parent: The original process is debugged after a fork. The child process runs unimpeded. This is the default.

    child: The new process is debugged after a fork. The parent process runs unimpeded.