如何使用ptrace附加进程中的所有线程

问题描述 投票:0回答:1

Linux中有一些带有线程的进程。

我知道只有1个线程调用syscallrecvfromsocket x,我想查找此线程的tid(使用ptrace,不使用strace)

最佳方法是什么?使用PTRACE_ATTACH附加到pid,然后在/ proc / pid / task上运行以获取所有线程ID,然后附加到每个线程并使用PTRACE_SYSCALL查找调用recv的线程ID?

有没有ptrace,有没有简便的方法?

c linux system-calls ptrace
1个回答
0
投票

[如果您查看ptrace的手册页上说-

首先需要将示踪物连接到示踪剂。附件和后续命令是针对每个线程的:在多线程进程中,每个螺纹可以单独连接到...

ptrace(PTRACE_foo, pid, ...)

其中pid是相应的Linux线程的线程ID。

回答您的问题-

最佳方法是什么?使用PTRACE_ATTACH附加到pid,然后在/ proc / pid / task上运行以获取所有线程id,然后附加到每个线程并使用PTRACE_SYSCALL查找调用recv的线程ID

是的,这是正确的方法。

© www.soinside.com 2019 - 2024. All rights reserved.