【发布时间】:2013-02-28 03:32:08
【问题描述】:
我正在开发一个应用程序,父母派出一个孩子来处理某些任务。我遇到了一个问题,我已将 gdb 配置为 follow-fork-mode child,但在 fork 之后,到达断点后,它会发送一个 SIGTRAP 但孩子会以某种方式终止并将 SIGCHLD 发送给父级。
我在 fork 之前配置了signal(SIGTRAP, SIG_IGN),所以我的理解是,当断点到达但没有发生时,孩子应该继承并忽略 SIGTRAP。
如果我不正确,请帮助我理解这一点。
如何才能成功调试子进程?
【问题讨论】:
-
"... 到达断点后,它会发送一个 SIGTRAP ..." 这是通知调试器有关断点的方式。 “...孩子以某种方式终止...”正常或异常终止?您可以在父级中
wait[...]([...,]&status[, ...])返回的值上使用WIFEXITED(status)来检查这一点。详情请见man 3 wait。