我是 strace 新手,我想 strace 一个 fork 的 child 。因为我想以普通用户身份执行此操作,所以我想要通过 pid 进行 strace 的进程需要是跟踪进程 (strace) 的子进程,因此我需要 fork 两次。在bash中:
( ( sleep 1; echo "I'm echoed from a child of strace" )& exec strace -p $! )
#the sleep is for giving strace time to attach itself
这一切都有效,但是我也想跟踪被跟踪进程的子进程,一旦我将 -f
开关添加到 strace,我就会收到错误:
( ( sleep 1; echo "I'm echoed from a child of strace" )& exec strace -fp $! )
#=> strace: attach: ptrace(PTRACE_ATTACH, ...): No such process
有什么建议吗?
最佳答案
您可以跟踪您自己用户的所有进程,而不仅仅是 strace
的子进程。
针对您遇到的问题,您可以将命令重写如下:
strace -f bash -c ' sleep 1; echo "我是从 strace 的 child 那里得到的回声"'
关于linux - 按 pid 进行跟踪,包括子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28980825/