我很难理解 strace 的 -D 选项。strace 联机帮助页说
-D 将跟踪进程作为分离的孙进程运行,而不是作为被跟踪进程的父进程。这通过将被跟踪者保持为调用进程的直接子进程来减少 strace 的可见效果。
“跟踪进程”是运行strace的进程吗?
“调用进程”是“跟踪进程”的父进程吗?
不带-D和带-D的tracer、tracee和calling进程的父子关系是什么?
谢谢!
我很难理解 strace 的 -D 选项。strace 联机帮助页说
-D 将跟踪进程作为分离的孙进程运行,而不是作为被跟踪进程的父进程。这通过将被跟踪者保持为调用进程的直接子进程来减少 strace 的可见效果。
“跟踪进程”是运行strace的进程吗?
“调用进程”是“跟踪进程”的父进程吗?
不带-D和带-D的tracer、tracee和calling进程的父子关系是什么?
谢谢!
跟踪进程是运行的进程
strace
,是的。调用进程是启动的进程strace
,因此通常是您的 shell。没有
-D
,被跟踪进程的父级最终是strace
:显示
pstree
为随着
-D
,strace
分离自身并最终在我的系统上重新成为我的用户systemd
进程的父级:该选项的影响在手册页中进行了
-D
简要描述:strace
Running with
-D
意味着孩子在调用时会找到它期望的父母,并且当孩子停止和继续时getppid()
它也会使行为正确。SIGCHLD
这在您在进程和它的子进程之间插入的情况下很重要strace
,当它的子进程需要找到它们的父进程时。