890
Debugging programs with multiple processes
Contents|Index|Previous|Next
Debugging programs with multiple processes
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 attach with Debugging an already-running process). From that point on you can debug the child process just like any other
process to which you attached.
0