是否执行“perf trace -p”` 跟踪所有线程?

是否执行“perf trace -p”` 跟踪所有线程?

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/9822pool/9822。调用的调用堆栈fsync(我使用的--call-graph=dwarf)看起来非常线程:底部的两个条目是__GI___clonestart_thread (/usr/lib64/libpthread-2.27.so)。我在 的当前输出中找不到该线程ps -eLF。根据这个和名称pool,我怀疑它是一个临时工作线程。也许perf trace -p <PID>不关注新创建的线程?

版本:perf-4.19.3-200.fc28.x86_64

相关内容