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