strace -f -p <PID>
跟踪多线程进程的所有线程中的系统调用。 (这也遵循分叉,有一个选项-b execve
试图解决这个问题)。
是否perf trace -p <PID>
跟踪进程的所有线程?它看起来就像它应该做的那样,因为它还有一个--tid
选择。
我想我追踪了gnome-shell
系统上的所有 PID。但是,同时我也跑了perf trace -a
。我使用过滤了两条痕迹-e fsync
。全局跟踪显示gnome-shell
调用 fsync 的任务。但 PID 特定的跟踪却没有。
在全局跟踪中,任务被标识为gnome-shell/9822
或pool/9822
。调用的调用堆栈fsync
(我使用的--call-graph=dwarf
)看起来非常线程:底部的两个条目是__GI___clone
和start_thread (/usr/lib64/libpthread-2.27.so)
。我在 的当前输出中找不到该线程ps -eLF
。根据这个和名称pool
,我怀疑它是一个临时工作线程。也许perf trace -p <PID>
不关注新创建的线程?
版本:perf-4.19.3-200.fc28.x86_64