GDB 是否通过 SIGCHLD 缓存调试对象的信号?
Is GDB caching debuggee's signal by SIGCHLD?
看到这个文档:https://idea.popcount.org/2012-12-11-linux-process-states/(有点旧)。它说 ptrace 正在通过接收 SIGCHLD 来处理被调试者的信号。 GDB是否依赖于此?
相关的,当信号处理程序设置为 "noprint nostop pass" 时,GDB 会收到通知吗?
此外,上面的文档说,在 ptrace 的情况下,系统会在发生某些信号时阻止调试对象,直到调试器完成处理并通过 waitpid() 继续调试对象。现在还是这样吗?
提前致谢!
您提出的每个问题的答案都是 "yes",除了:
and continues debugee by waitpid()
waitpid
不会继续调试对象,只是等待它。 "continue" 完成了(惊喜!)ptrace(PTRACE_CONT, ...)
.
看到这个文档:https://idea.popcount.org/2012-12-11-linux-process-states/(有点旧)。它说 ptrace 正在通过接收 SIGCHLD 来处理被调试者的信号。 GDB是否依赖于此? 相关的,当信号处理程序设置为 "noprint nostop pass" 时,GDB 会收到通知吗? 此外,上面的文档说,在 ptrace 的情况下,系统会在发生某些信号时阻止调试对象,直到调试器完成处理并通过 waitpid() 继续调试对象。现在还是这样吗?
提前致谢!
您提出的每个问题的答案都是 "yes",除了:
and continues debugee by waitpid()
waitpid
不会继续调试对象,只是等待它。 "continue" 完成了(惊喜!)ptrace(PTRACE_CONT, ...)
.