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 to 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 Debugging an already-running process). From that point on you can debug
the child process just like any other process which you attached to.
Go to the first, previous, next, last section, table of contents.