我正在尝试从一个奇怪的make文件中提取东西,我发现systemtap是一个潜在的好解决方案,所以我在这里:
使用 nd_syscall.clone.return
进行探测时,我可以从新进程中调用正确的pid()
ppid()
,但这不包括我在目标脚本中找到的所有 vfork。
因此,当我使用探测nd_syscall.vfork.return
时,我发现该消息仅具有克隆调用者的pid()
和ppid()
,我试图获取vfork的返回值,但它似乎不是新的pid(我从许多相关的execve事件中看到
我无法使用kprocess
,因为我不想安装调试信息。
有什么方法可以从 vfork 获得正确的new_pid?我错过了一些参数吗?还是我使用了错误的探测功能?一定有办法,谢谢!
附言我已经尝试过 sysdig,但它跳过了很多事件。
您是否尝试过内核跟踪点探测?
probe kernel.trace("sched_process_fork") {
printf("%d->%dn", $parent->pid, $child->pid)
}