strace将父pid关联到子pid

时间:2018-07-18 12:20:45

标签: linux system-calls strace

我正在通过运行来跟踪应用程序:

strace -f -y -qq -z -etrace=execve,... -o app.trace ./app

有没有办法确定哪个进程产生了哪个child_process?

我的目标是构建一个图形,该图形编码(子)进程的层次关系,以进一步分析系统调用。

编辑: 这里是一个更具体的例子: 给出以下流程层次结构:

p1
|
.---.
|   |
p2  p3
    |
    p4

我确定使用strace可以触发p2和p4触发感兴趣的系统调用。 现在,我想找到最接近的共同祖先,在本例中为p1。

是否可以使用strace创建包含所有信息的转储,还是必须并行使用ps / pstree

EDIT2:

我无法为问题解决pstreepstree似乎只给您快照,而且我的许多进程都非常短暂,无法通过反复调用pstree可靠地捕获所有进程。

EDIT3: 我在跟踪中注意到以下条目:

23901 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=23902, si_uid=1000, si_status=0, si_utime=0, si_stime=0} ---

进程23901SIGCHLD记录si_pid=23902信号。 是否暗示进程23901创建了子进程23902

1 个答案:

答案 0 :(得分:0)

您应该跟踪对clone的呼叫。它告诉谁产生了谁。