我通过运行以下命令来跟踪应用程序:
strace -f -y -qq -z -etrace=execve,... -o app.trace ./app有没有办法确定哪个进程产生了哪个child_process?
我的目标是构建一个对(子)进程的层次关系进行编码的图,以便进一步分析syscall。
EDIT:这里是一个更具体的示例:给定以下流程层次结构:
p1
|
.---.
| |
p2 p3
|
p4我使用strace识别p2和p4触发感兴趣的系统调用。现在我想找到最接近的共同祖先,在本例中是p1。
是否可以使用strace创建包含所有信息的转储文件,或者必须并行使用ps/pstree?
EDIT2:
我无法使用pstree来解决我的问题。pstree似乎只给了您一个快照,而且我的许多进程都非常短暂,因此不可能通过重复调用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} ---Process 23901使用si_pid=23902记录SIGCHLD信号。这是否意味着process 23901创建子进程23902?
https://stackoverflow.com/questions/51401894
复制相似问题