首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将来将运行的用户进程

将来将运行的用户进程
EN

Stack Overflow用户
提问于 2015-11-05 19:03:50
回答 1查看 588关注 0票数 1

有一个用户进程-1,它可以‘执行’第二个进程-2。当我不知道何时可以创建第二个进程时,我可以跟踪它吗?在不知道pid的情况下,我不能在dtrace脚本中同时使用'-p‘和'-c’选项,并且不想手动执行进程。

使用PID提供程序,我得到一个命名空间错误(函数不属于进程1)。我尝试了"::functio_name:entry /execname == "process-2"/ {},但这并不能为用户空间程序编译。

谢谢你的指点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 01:39:34

我认为这个帖子可以帮助你。您需要2 DTrace脚本:

(1)第一个脚本用于跟踪process-2何时启动。一旦它开始运行,启动另一个脚本来跟踪process-2

代码语言:javascript
复制
# cat followfork.d
proc:::start
/ppid == $target/
{
    stop();
    printf("fork %d\\n", pid);
   system("dtrace -qs child.d -p %d", pid);
}

(2)第二个脚本跟踪聚焦功能:

代码语言:javascript
复制
# cat child.d
pid$target::function_name:entry
{
    ......
}

您还可以参考有关DTrace邮件列表的相关讨论:

如何跟踪父进程和子进程的libc模块?

当一个进程被stop()操作停止时,进程何时以及如何重新启动?

顺便说一句,您还可以参考Sergey Klyaus的 基于DTrace和SystemTap的动态跟踪来检查在进程创建中应该使用哪些探测:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33552731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档