我正在开发一个应用程序,其中父进程分叉出一个子进程来处理某些任务。 我遇到了一个问题,即我已经将gdb配置为follow-fork-mode child,但在分叉之后,在达到断点后,它发送了一个SIGTRAP,但子进程以某种方式终止并向父进程发送了SIGCHLD。
我在fork之前配置了signal(SIGTRAP, SIG_IGN),因此我的理解是当达到断点时,子进程应该继承并忽略SIGTRAP,但实际上并没有发生这种情况。
如果我理解有误,请帮助我理解这个问题。
如何成功调试子进程?
我在fork之前配置了signal(SIGTRAP, SIG_IGN),因此我的理解是当达到断点时,子进程应该继承并忽略SIGTRAP,但实际上并没有发生这种情况。
如果我理解有误,请帮助我理解这个问题。
如何成功调试子进程?
wait[...]([...,]&status[, ...])
返回值上使用WIFEXITED(status)
进行检查。有关详情,请参阅man 3 wait
。 - alk