dtrace将在未来运行的用户进程
问题描述:
有一个用户进程1可以'执行'第二个进程2。如果我不知道什么时候可以创建,我可以跟踪第二个过程-2。在不知道pid的情况下,我不能在dtrace脚本中同时使用'-p'和'-c'选项,也不想手动执行该过程。dtrace将在未来运行的用户进程
使用PID提供程序我得到一个名称空间错误(函数不属于进程1)。我想“:: functio_name:进入/ execname == “过程-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?
顺便说一句,你还可以参考谢尔盖Klyaus的Dynamic Tracing with DTrace & SystemTap检查哪些探测应用于过程创建: