从这里引用。
gdb把被debugging的进程放在它自己的pgrp中,并将terminal设置为该pgrp。 (尝试例如gj的PID和正在debugging的程序的ps j。)
这是什么意思
ps j上gdb的PID和正在debugging的程序
这是否意味着ps j PID ?
虽然我没有得到任何特别的东西
基本上我不明白那篇文章是在说什么,任何人都可以用更多的细节来解释它?
“pgrp”是一个进程组 。 ps j列出进程组ID(该列称为PGID )。 进程的PGID通常是它自己或其父进程组,但可以使用setpgid()任意设置。 进程组控制哪些进程接收作业控制信号。 我认为gdb将进程移动到自己的组,以避免进程接收到工作控制信号,这会扰乱gdb对进程的控制。
该错误报告是关于使用gdb与使用sigwait的程序。 sigwait允许进程以不正常的方式接收信号,而不是以通常的方式传递给进程,信号从待处理队列中移除, sigwait返回。 这主要是用来安排一个信号总是被传送到一个特定的线程:阻塞信号,但有一个线程消耗它通过运行sigwait 。
由于信号实际上并没有传递给进程,因此ptrace什么也没有看到,所以gdb不会被通知进程已经不知情地消耗了信号。
bug报告中的争论是关于内核是否应该被修改,以便ptrace在通过sigwait消耗信号时看到什么,或者gdb是否应该以不同的方式处理这种情况。 我不太了解这一点。