Feature requests: list of PIDS, and all threads
linux at horizon.com
Wed Mar 7 19:59:02 UTC 2012
With multi-process and multi-threaded programs becoming more common,
there are a couple of things I wish strace gave me:
1) Some way to supply a *list* of pids to be traced, without having to
prefix each with "-p". This would make it much easier to paste
in the output of "pgrep" or the like.
Two options come to mind:
-P means "all bare arguments are pids"; the case of mixing
pids and a commnd line process is somewhat uncommon.
-p takes a whitespace-separated list of pids. So I could
use -p "`pgrep foo`".
2) A simple way to trace all threads of a process. strace doesn't really
take process IDs but thread IDs, so if a process has multiple threads,
only the primary process gets traced. I'd like an easy way to say
"what the heck is firefox doing?" and get all the threads.
(Once again, this is working around a limitation of pgrep.)
3) A third thing that would be really nice would be a "don't break system
calls" option. Basically, if one system call is pending when a second
happens, DON'T display <pending...> unless a reasonable timeout has
elapsed; rather just defer printing anything for the first system
call until it returns, when it can be printed on one line.
This leads to a slight infidelity (for example a pipe write might not
be shown until *after* the corresponding read returned), but would make
other parts of understanding multi-threaded output much clearer.
Thank you of course, very much, for my single-most-useful debugging tool.
More information about the Strace-devel