Linux kernel 从systemtap中的nd_syscall.vfork.return获取新pid

Linux kernel 从systemtap中的nd_syscall.vfork.return获取新pid,linux-kernel,systemtap,vfork,Linux Kernel,Systemtap,Vfork,我正在尝试,我发现systemtap是一个潜在的好解决方案,因此我: 当使用nd\u syscall.clone.return进行探测时,我可以从新进程中获得正确的pid()ppid()调用,但是这并不包括我在目标脚本中找到的所有vWorks 因此,当我使用probend\u syscall.vfork.return时,我发现消息中只包含克隆调用方的pid()和ppid(),我试图获取vfork的返回值,但它似乎不是新的pid(我从许多相关的execve事件中看到) 我无法使用kprocess,

我正在尝试,我发现systemtap是一个潜在的好解决方案,因此我:

当使用
nd\u syscall.clone.return
进行探测时,我可以从新进程中获得正确的
pid()
ppid()
调用,但是这并不包括我在目标脚本中找到的所有vWorks

因此,当我使用probe
nd\u syscall.vfork.return
时,我发现消息中只包含克隆调用方的
pid()
ppid()
,我试图获取vfork的返回值,但它似乎不是新的pid(我从许多相关的execve事件中看到)

我无法使用
kprocess
,因为我不想安装调试信息

有什么方法可以从vWork获得正确的新pid?我错过了一些args吗?还是我使用了错误的探测功能?一定有办法的,谢谢


顺便说一句,我试过sysdig,但它跳过了很多事件。

你试过内核跟踪点探测吗

probe kernel.trace("sched_process_fork") {
   printf("%d->%d\n", $parent->pid, $child->pid)
}