Denys Vlasenko, 08.03.2012 12:32: > On 03/07/2012 08:59 PM, George Spelvin wrote: >> 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`". > > I guess we can support -p PID1,PID2 _and_ -p "PID1 PID2". > Why not? > >> 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.) > > The code to do so is there (-p PID -f would do what you want even today - > but it will also follow forks which you didn't ask for). > We only need an option to indicate this. -T and -t are taken. -P is taken too. > We are running out of alphabet! :)
Why is -P taken? Because of (1)? But you said that "-p" could also support multiple pids, so theoretically -P would be available. Other than that, if we have -tt and -ff, we could also use -pp, couldn't we? ;-) >> 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. > > Uhhuh. That would not be so easy to implement. And some people > do want to know exact moment syscalls were entered/exited. > > -tt -ff does almost what you want. It separates logs one output file > per pid. A script can be written to combine them into one file, > using timestamps for ordering. Would this satisfy you? I am writing such a script right now, but saw on Ubuntu 11.10 (strace 4.5.20) that -ff does not record PID information inside the log file, only append the pid to the log file name. With my self-compiled strace 4.6 on mipsel embedded platform though, the logs contain pid information as first column. The NEWS document does not mention a change in log file format though. Can you comment on this please? I can easily create a script which supports both versions, doing different 'sed' replacements, but I was just wondering why this is necessary at all. Necessary 'sed' replacement in 4.5.20: insert pid after timestamp (otherwise we cannot sort by timestamp). Necessary 'sed' replacement in 4.6: move pid from first column (before timestamp) to second column (otherwise we again cannot sort by timestamp). ------------------------------------------------------------------------------ Virtualization & Cloud Management Using Capacity Planning Cloud computing makes use of virtualization - but cloud computing also focuses on allowing computing to be delivered as a service. http://www.accelacomm.com/jaw/sfnl/114/51521223/ _______________________________________________ Strace-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/strace-devel
