There is a perl script called strace-graph
. Here is a version from github. It is packaged with crosstool-ng versions of compilers. It works for me even used cross platform.
There is also a more modern python3 script. It can be installed on Debian/Ubuntu (and many other systems) with pip3 install strace-process-tree
.
The process below to capture data is the same for both (but use strace-process-tree
instead to create the graph). Thanks Jan Tojnar
It seems the perl script may suffer from bit rot. For a cross platform solution with older busybox type ps
, it may work.
ARM Linux box.
$ ./strace -f -q -s 100 -o app.trc -p 449
$ tftp -pr app.trc 172.0.0.133
X86_64 Linux box.
$ ./strace-graph /srv/tftp/app.trc
(anon)
+-- touch /tmp/ppp.sleep
+-- killall -HUP pppd
+-- amixer set Speaker 70%
+-- amixer set Speaker 70%
+-- amixer set Speaker 70%
+-- amixer set Speaker 70%
+-- amixer set Speaker 50%
+-- amixer set Speaker 70%
`-- amixer set Speaker 50%
The output can be used to help navigate the main trace log.
strace-process-tree example
$ strace -f -q -o app.trc sh -c 'for i in `seq 0 10` ; do /usr/bin/echo "Hello There"; done;'
$ strace-process-tree -A -C app.trc
356 sh -c 'for i in `seq 0 10` ; do /usr/bi...'
|-357 seq 0 10
|-358 /usr/bin/echo "Hello There"
|-359 /usr/bin/echo "Hello There"
|-360 /usr/bin/echo "Hello There"
|-361 /usr/bin/echo "Hello There"
|-362 /usr/bin/echo "Hello There"
|-363 /usr/bin/echo "Hello There"
|-364 /usr/bin/echo "Hello There"
|-365 /usr/bin/echo "Hello There"
|-366 /usr/bin/echo "Hello There"
|-367 /usr/bin/echo "Hello There"
`-368 /usr/bin/echo "Hello There"