
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