For more half-baked ideas, see the ideas tag
strace -f a collection of processes you end up with pretty frustrating output that looks like this. It’s almost impossible to keep track without pen and paper and plenty of time.
The half-baked idea is a visualization tool that takes the log file and constructs a picture — changing over time — of what processes are related to what other processes, what binaries they correspond to, what sockets are connected to each process (and connected between processes), what each program wrote to stderr, and so on.
There would be some sort of timeline slider that lets you watch this picture evolving over time, or lets you jump to, say, the place where program X exited with an error.
Make it happen, lazyweb!
For more half-baked ideas, see the ideas tag.
Why’s it not possible to run a deeply nested set of programs (eg. a large build) and have strace or gdb just trigger on a particular program? For example you could do a regular expression match on a command line:
exectrace --run=strace --cmd="\./prog.*-l" -- make check
would (given this theoretical exectrace tool) trigger strace when any child process of the
make check matches the regexp
Or perhaps you could trigger on current directory:
exectrace --run=strace --cwd=tests -- make check
I guess this could be implemented using PTRACE_O_TRACEEXEC, and it should have less overhead then doing a full recursive strace, and less annoyance than trying to trace a child in gdb (which AFAIK is next to impossible).