title: remote debugging gdb multiple process
body: <p>I am unable to debug a child process of a remote debugging session. I found a similar question <a href="https://stackoverflow.com/questions/377195/how-to-debug-the-entry-point-of-fork-exec-process">How to debug the entry-point of fork-exec process in GDB?</a></p>
  <p>I am following the same procedure, although for a remote target. Is <code>follow-fork-mode child</code> supported for remote targets ?</p>
  <p>Following is my sample code..</p>
  <pre><code>      1 #include &lt;stdio.h&gt;
        2 #include &lt;stdlib.h&gt;
        3 #include &lt;sys/types.h&gt;
        4 #include &lt;unistd.h&gt;
        5
        6 int spawn (void)
        7 {
        8         pid_t child_pid;
        9         /* Duplicate this process. */
       10         child_pid = fork ();
       11         if (child_pid != 0)
       12                 /* This is the parent process. */
       13                 return child_pid;
       14         else {
       15                 /* Now execute PROGRAM, searching for it in the path. */
       16                 while(1)
       17                 {
       18                         static int i = 0;
       19                         if(i==0)         /* break here for child */
       20                         {
       21                                 printf(&quot;I am child\n&quot;);
       22                         }
       23                         else if(i==3)
       24                         {
       25                                 return 1;
       26                         }
       27                         else
       28                         {
       29                                 i = 0/0;
       30                         }
       31                         i++;
       32                 }
       33         }
       34         return 0;
       35 }
       36 int main ()
       37 {
       38         /* Spawn a child process running the .ls. command. Ignore the
       39            returned child process ID. */
       40         printf(&quot;Hello World..!!\n&quot;);
       41         spawn ();
       42         printf (&quot;Bbye World..!!\n&quot;);
       43         return 0;
       44 }
  </code></pre>
  <p>Running it with gdb, I can set set break point in child.. all fine here.!!</p>
  <pre><code>sh-3.2# gdb fork
  (gdb) set follow-fork-mode child
  (gdb) set detach-on-fork off
  (gdb) b 19
  Breakpoint 1 at 0x80483d0: file fork-exec.c, line 19.
  (gdb) c
  The program is not being run.
  (gdb) start
  Breakpoint 2 at 0x8048437: file fork-exec.c, line 40.
  Starting program: fork
  main () at fork-exec.c:40
  40              printf(&quot;Hello World..!!\n&quot;);
  (gdb) c
  Continuing.
  Hello World..!!
  [Switching to process 10649]
  
  Breakpoint 1, spawn () at fork-exec.c:19
  19                              if(i==0)         /* break here for child */
  (gdb)
  </code></pre>
  <p>However if I try to catch child via gdbserver break point is lost..</p>
  <pre><code>sh-3.2# gdbserver :1234 fork &amp;
  [5] 10686
  sh-3.2# Process fork created; pid = 10689
  Listening on port 1234
  </code></pre>
  <p>Run as target remote</p>
  <pre><code>sh-3.2# gdb fork
  (gdb) target remote localhost:1234
  Remote debugging using localhost:1234
  Remote debugging from host 127.0.0.1
  [New Thread 10689]
  0x00bd2810 in _start () from /lib/ld-linux.so.2
  (gdb) break 19
  Breakpoint 1 at 0x80483d0: file fork-exec.c, line 19.
  (gdb) c
  Continuing.
  Hello World..!!
  Bbye World..!!
  
  Child exited with retcode = 0
  
  Program exited normally.
  
  Child exited with status 0
  GDBserver exiting
  </code></pre>
  <p>What is the procedure to debug child process in embedded world. I know I can do a process attach, but I want to debug from the very beginning of the child process..</p>