首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果只有一个线程被停止,那么ptrace可以从多线程进程读取/写入数据吗?

如果只有一个线程被停止,那么ptrace可以从多线程进程读取/写入数据吗?
EN

Stack Overflow用户
提问于 2014-03-13 12:20:43
回答 1查看 426关注 0票数 0

对我来说,文档对我来说有点模糊。上面写着:

跟踪器首先需要连接到追踪器上。每个线程都有附件和后续命令:在多线程进程中,每个线程可以单独连接到一个(可能不同的)跟踪器上,或者不附加,因此不进行调试。因此,"tracee“总是指”(一个)线程“,而不是”一个(可能是多线程的)进程“。

另外:

在以下请求中,pid指定要操作的tracee的线程ID。对于PTRACE_ATTACH、PTRACE_SEIZE、PTRACE_INTERRUPT和PTRACE_KILL以外的请求,必须停止tracee。

那么,如果我们有一个多线程进程,我们用PTRACE_SEIZE附加到一个线程上,然后用PTRACE_INTERRUPT停止它,那么我们能用PTRACE_PEEKTEXT、PTRACE_PEEKDATA、PTRACE_POKETEXT或PTRACE_POKEDATA读写整个进程的全局数据吗?

次要问题:如果对主要问题的回答是肯定的,为什么需要停止线程?我认为需要停止才能实现某种类型的锁定机制,但是如果一个线程停止了,那么其他线程可以写入ptrace试图自由读写的内存中。

EN

回答 1

Stack Overflow用户

发布于 2014-03-13 12:24:39

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22378479

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档