根据ptrace手册页面:http://man7.org/linux/man-pages/man2/ptrace.2.html:
系统调用进入停止和系统调用退出停止对于跟踪程序来说是无法区分的。跟踪程序需要跟踪ptrace停止的顺序,以免将系统调用进入停止误解为系统调用退出停止,反之亦然。
当我使用PTRACE_ATTACH附加到一个进程时,如何知道被跟踪的进程当前是否在系统调用中?换句话说,如果我使用PTRACE_SYSCALL重新启动被跟踪的进程,如何知道下一个系统调用停止是syscall-enter-stop还是syscall-exit-stop?
系统调用进入停止和系统调用退出停止对于跟踪程序来说是无法区分的。跟踪程序需要跟踪ptrace停止的顺序,以免将系统调用进入停止误解为系统调用退出停止,反之亦然。
当我使用PTRACE_ATTACH附加到一个进程时,如何知道被跟踪的进程当前是否在系统调用中?换句话说,如果我使用PTRACE_SYSCALL重新启动被跟踪的进程,如何知道下一个系统调用停止是syscall-enter-stop还是syscall-exit-stop?