我无法创建ptrace中附加和分离部分中描述的行为:
If the tracer dies, all tracees are automatically detached and
restarted, unless they were in group-stop.
我有一个进程(tracee),它由多个线程组成,我使用ptrace
附加到这些线程。使用以下调用使用单独的进程(跟踪器):
ptrace(PTRACE_ATTACH, pid, 0, 0);
sleep(3600);
当示踪器在休眠时死亡(使用ctrl + c或kill -9)并仍然附加到进程时,我注意到tracee进程的所有线程都处于停止状态而不是继续执行。
我也尝试使用GDB来重现这个问题,因为GDB也使用ptrace附加到进程。但是当附加tracee时杀死gdb(使用kill -9)时,tracee的所有线程都会按预期继续执行。 我试过看过GDB的来源,但还是找不到任何东西。
当跟踪器死亡时,是否有人知道什么可能导致所有tracee线程的行为被停止?
使用内核3.6.5在ARM Cortex-A9 CPU上进行评估