2

我试图从一个奇怪的 makefile 中提取东西,我发现 systemtap 是一个潜在的好解决方案,所以我在这里:

使用 探测时,我可以pid() ppid()从新进程中正确调用nd_syscall.clone.return,但这不包括我在目标脚本中找到的所有 vfork。

因此,当我使用 probe 时nd_syscall.vfork.return,我发现该消息具有克隆调用者的pid(),并且ppid()只有,我试图获取 vfork 的返回值,但它似乎不是新的 pid(我从很多人那里看到相关的 execve 事件)。

我不能使用kprocess,因为我不想安装调试信息。

有什么方法可以从 vfork 获得正确的 new_pid?我错过了一些参数吗?还是我使用了错误的探测功能?一定有办法,谢谢!

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

4

1 回答 1

1

您是否尝试过内核跟踪点探测?

probe kernel.trace("sched_process_fork") {
   printf("%d->%d\n", $parent->pid, $child->pid)
}
于 2017-02-19T15:08:16.890 回答