Debugging Child Processes
This chapter is organized into the following sections:
Attaching to Child Processes
You can attach to a running child in one of the following ways.
$ dbx progname pid
From the command line:
(dbx) debug progname pid
You can substitute progname with the name - (minus sign), so dbx finds the executable associated with the given process id (pid). After using a -, a subsequent run or rerun will not work because dbx does not know the full pathname of the executable.
Following the exec
If a child process executes a new program using exec(2) or one of its variations, the process id does not change, but the process image does. dbx automatically takes note of an exec() and does an implicit reload of the newly executed program.
If a child process does vfork(), fork(1), or fork(2), the process id changes, but the process image stays the same. Depending on how the dbxenv variable follow_fork_mode is set, dbx does the following:
Interacting with Events
All breakpoints and other events are deleted for any exec() or fork() process. You can override the deletion for follow fork by setting the dbxenv variable follow_fork_inherit to on, or make them permanent using the
-perm eventspec modifier. For more information on using event specification modifiers, see Chapter 8, "Event Management."