This!
Learning all of the strace flags is a very useful endeavor. Filtering is a must to see exactly the calls that I'm looking for.
I don't think most developers appreciate how often syscalls happen. Without filtering, you're getting all:
- file i/o (read, write, readv, writev, pread, pwrite, ...)
- network i/o (select, poll, accept, epoll, ...)
- memory allocations (mmap,munmap, sbrk, ...)
- process querying (getenv/setenv, getpid, gettid,...)
- time (gettimeofday, sleep, ...)
- synchronization (futex, ...)
I'm sure there's a bunch more that I'm neglecting. It produces quite a bit of noise!