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检查哪些探测应用于过程创建:
enter image description here