有一个用户进程-1可以执行'第二个过程-2。当我不知道何时可以创建它时,我可以跟踪第二个过程吗?我不能同时使用' -p'和' -c'使用dtrace脚本的选项,但不知道pid,也不想手动执行该过程。
使用PID提供程序我得到命名空间错误(不属于进程1的函数)。我尝试了#34; :: functio_name:entry / execname ==" process-2" / {},但这并没有为用户空间程序编译。
感谢您的任何指示。
答案 0 :(得分:2)
我认为这post可以帮到你。您需要2
DTrace脚本:
(1)第一个脚本用于跟踪process-2
的启动时间。一旦开始运行,启动另一个脚本来跟踪process-2
:
# cat followfork.d
proc:::start
/ppid == $target/
{
stop();
printf("fork %d\\n", pid);
system("dtrace -qs child.d -p %d", pid);
}
(2)第二个脚本跟踪聚焦函数:
# cat child.d
pid$target::function_name:entry
{
......
}
您还可以参考DTrace
邮件列表中的相关讨论:
How to trace libc module of both parent andchild processes?
When a process is stopped by stop() action, when and how does the process is restarted?