【发布时间】:2019-02-02 23:59:31
【问题描述】:
Syscall-enter-stop 和 syscall-exit-stop 无法区分 彼此由示踪剂。跟踪器需要跟踪 ptrace-stops 序列,以免误解 syscall-enter- stop 作为 syscall-exit-stop 或反之亦然。
当我使用PTRACE_ATTACH 附加到一个进程时,我如何知道被跟踪者当前是否在系统调用中?换句话说,如果我使用PTRACE_SYSCALL 重新启动tracee,我怎么知道下一个syscall-stop 是syscall-enter-stop 还是syscall-exit-stop?
【问题讨论】:
-
这是个好问题。我一直认为,当跟踪的进程处于系统调用中时,附件不会成功,但我没有任何证据支持这一假设。
-
我想系统调用进入/退出的报告只会在当前系统调用返回后开始(在附加之后)(如果它是可中断的,很可能会用 EINTR 中断它),所以你总是可以假设第一个系统调用停止是输入。没有验证自己,但很容易检查。