我正在尝试编写一个程序来执行ptrace(PTRACE_ATTACH, pid, nullptr, nullptr)
但它返回-1
而errno是3
(没有这样的过程)。 tracee正在运行并由我开始,所以我想跟踪器应该有权限。那我该怎么办?
ptrace似乎也是基于每个线程的。是否有简单的方法来获取给定进程ID的所有线程ID?唯一的方法是检查/proc/{pid}/task/{tid}
?如何捕捉线程创建?
答案 0 :(得分:0)
您可以使用ptrace(PTRACE_SETOPTIONS, pid, nullptr, PTRACE_O_TRACECLONE)
捕获线程创建。我建议您仔细阅读man 2 ptrace
。
PTRACE_ATTACH
可能由于多种原因而失败。尝试使用sudo
以root身份运行您的流程。