ptrace附加:不允许操作

时间:2019-05-28 15:15:06

标签: c++ ptrace

我有一个程序,希望以这种方式将一个线程附加到其对等线程之一:

 if ( ptrace ( PTRACE_ATTACH, prettyThreadId, NULL, NULL ) < 0 )
 {
      printf("PTrace attach failed for thread %u. Error: %s\n", prettyThreadId, strerror( errno ) );
      return false;
 }

但是,我总是收到不允许操作的错误:

线程6246的PTrace连接失败。错误:不允许进行操作

通过strace或gdb附加到任意进程都可以。须藤没有帮助。系统是Ubuntu 17.10。

我在做什么错了?

编辑: 我用克隆技巧从另一个线程读取了答案,但我认为我不能使用它。它假定跟踪器线程是被跟踪线程的父级并对其进行分叉,但由于无法更改线程层次结构,因此无法做到这一点。如果有一种方法,我可以赋予跟踪器线程与克隆技巧相同的特权,请告诉我。

编辑2:gdb如何将自身附加到正在运行的进程?它是否使自己成为主线程的父级?如果是,怎么办?

0 个答案:

没有答案