strace
概要
straceの使い方についてのメモ
スレッド
$ strace -p 3887 Process 3887 attached futex(0x7fc579e0b9d0, FUTEX_WAIT, 3889, NULL^CProcess 3887 detached
上記コマンドを打ったところ、プロセスはちゃんと働いているはずなのにここで止まってしまった。 そのプロセスからforkしたプロセスも対象にいれないといけませんでした。
$ strace -f -p 3887
これでドバーとシステムコールが表示される。
オプション
$ strace -ttT -ff -o ~/strace-log -p 3887
- tt: 行頭にタイムスタンプをマイクロ秒単位で出力
- T: 行末にシステムコール内での所要時間を出力
- ffとo:この2つを組み合わせることで
strace-log.スレッドID
毎にstraceのログを出力してくれる
$ strace -ttT -fc -p 3887 % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 38.39 0.206970 10893 19 epoll_wait 36.90 0.198972 1442 138 46 futex 21.14 0.113984 18997 6 4 restart_syscall 3.13 0.016853 624 27 mmap 0.35 0.001882 1 2746 clock_gettime 0.05 0.000292 4 82 unlink 0.03 0.000164 4 44 munmap 0.00 0.000022 0 293 write 0.00 0.000013 0 1011 6 lstat 0.00 0.000000 0 15 read 0.00 0.000000 0 32 open 0.00 0.000000 0 34 close 0.00 0.000000 0 115 stat 0.00 0.000000 0 166 fstat 0.00 0.000000 0 4 mprotect 0.00 0.000000 0 1 rt_sigprocmask 0.00 0.000000 0 44 sched_yield 0.00 0.000000 0 1 madvise 0.00 0.000000 0 469 gettimeofday ------ ----------- ----------- --------- --------- ---------------- 100.00 0.539152 5247 56 total
cで統計表示。便利。