gpt4 book ai didi

linux - 使用 ptrace 自附加?

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:27 31 4
gpt4 key购买 nike

是否可以从该进程中的线程跟踪同一进程?我在 [1] 中发现了一个讨论,它似乎提出了一种(可能有效也可能无效)对我来说有点涉及的方法,因为我对 pthreads API 不太熟悉。有人尝试过这个吗?任何代码指针都会很棒。

[1] http://yarchive.net/comp/linux/ptrace_self_attach.html

最佳答案

您绝对不想为此使用 POSIX 线程(pthreads)。 POSIX 线程引入了一套全新的应用程序语义,这些语义在这里根本不适用。

第二段解释了如何正确执行此操作:

对于第一个,我找到了一个合理的方法来避免这个问题:调试线程可以执行“vfork()”(或者,如果 vfork() 在libc,直接“克隆(CLONE_VFORK | CLONE_MM)”)以获得新的位于_不同_线程组中的线程,但能够 ptrace 和也与虚拟机“同步”,只是因为它与所有虚拟机共享它可能想要调试的其他线程

这种机制就是 gdb(1) 和 crash(8) 等用户空间调试器的工作原理:它们使用 vfork(2) 创建紧密耦合的子进程,或者使用类似的 Linux 特定的 clone(2) 系统调用。

事实上,除了原始的 init(1) 程序之外,每个程序都是这样运行的:当前进程 fork ,一个进程[通常是子进程],然后 exec(2)' 所需的程序覆盖其执行环境。

关于linux - 使用 ptrace 自附加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31394989/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com