BBS水木清华站∶精华区

<摘自 `Debugging with GDB', Section 4.11, page 32> 
 
  GDB has no special support for debugging programs which create additional 
processes using the fork() function. When a program forks, GDB will continue 
to debug the parent process and the child process will run unimpeded. If you 
have set a breakpoint in any code which the child then executes, the child 
will get a SIGTRAP signal which (unless it catches the signal) will cause it 
to terminate. 
 
  However, if you want to debug the child process there is a workaround which 
isn't too painful. Put a call to sleep in the code which the child process 
executes after the fork. It may be useful to sleep only if a certain 
environment variable is set, or a certain file exists, so that the delay need 
not occur when you don't want ot run GDB on the child. While the child is 
sleeping, use the `ps' program to get its process ID. Then tell GDB (a new 
invocation of GDB if you are also debugging the parent process) to attach to 
the child process (see Section 4.7 [Attach], page 28). From that point on you 
can debug the process just like any other process which you attached to. 

BBS水木清华站∶精华区