The child process inherits signal handlers from the parent, but not the pending signal.
After forking try installing the signal handler for SIGTRAP
at a place in code where the child process executes after forking. If you don't handle SIGTRAP
, the default action is that the child is terminated.
If you want to debug the child process, you must use follow-fork-mode
.
You must set the mode using
set follow-fork-mode child
However, now only the child can be debugged, and the parent runs unchecked.
There is an alternative way of debugging the child process.
After fork()
is executed, put a sleep()
call in the code where the child executes, get the PID of the child using the ps
utility, then attach the PID.
attach <PID of child process>
Now, you can debug the child process, like any other process.
After debugging, you can detach the PID using
detach
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…