C++ 在一个且只有一个线程停止的情况下,ptrace是否可以从多线程进程读取/写入数据?

C++ 在一个且只有一个线程停止的情况下,ptrace是否可以从多线程进程读取/写入数据?,c++,c,linux,multithreading,ptrace,C++,C,Linux,Multithreading,Ptrace,这场比赛对我来说有点模糊。 它说: tracee首先需要连接到跟踪器。附件及 后续命令为每个线程:在多线程进程中,每个 线程可以单独连接到(可能不同) 跟踪器,或未连接,因此未调试。所以,, “tracee”总是指(一个)线程,而不是(可能的)线程 多线程)进程” 此外: 在以下请求中,pid指定tracee的线程ID 采取行动。对于PTRACE_ATTACH、PTRACE_ATTACH以外的请求, PTRACE_中断和PTRACE_终止,必须停止跟踪 因此,如果我们有一个多线程进程,并且我们使

这场比赛对我来说有点模糊。 它说:

tracee首先需要连接到跟踪器。附件及 后续命令为每个线程:在多线程进程中,每个 线程可以单独连接到(可能不同) 跟踪器,或未连接,因此未调试。所以,, “tracee”总是指(一个)线程,而不是(可能的)线程 多线程)进程”

此外:

在以下请求中,pid指定tracee的线程ID 采取行动。对于PTRACE_ATTACH、PTRACE_ATTACH以外的请求, PTRACE_中断和PTRACE_终止,必须停止跟踪

因此,如果我们有一个多线程进程,并且我们使用PTRACE_-capture连接到一个线程,并使用PTRACE_-INTERRUPT停止它,那么我们是否能够使用PTRACE_-peek-text、PTRACE_-peek-data、PTRACE_-POKETEXT或PTRACE_-POKEDATA读取/写入整个进程的全局数据

第二个问题:
如果主要问题的答案是肯定的,那么为什么需要停止线程?我认为需要停止来实现某种锁定机制,但是如果单个线程停止,那么其他线程可以写入ptrace尝试自由读/写的内存。

是的,您可以读取全局内存,但是,如果有正在运行的线程同时修改内存,则结果可能不一致。此外,线程上下文(寄存器和标志)只能为跟踪的、停止的线程获取