Anukool Lakhina wrote:

> Does gdb allow me to trace the actions of a specific child process that has
> been forked? If so, how?

The following is from the gdb Info file.

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 *Note
Attach::).  From that point on you can debug the child process just
like any other process which you attached to.

-- 
Glynn Clements <[EMAIL PROTECTED]>

Reply via email to