pro*_*ave 94 linux multithreading strace
我曾经strace
简要地附上过程.该过程创建了90个线程.当我找到有问题的线程时,我不得不繁琐地搜索父线程,然后是祖父母线程,等等一直到根进程.
有没有一个技巧或工具可以快速找出哪个线程创建了另一个?或者更好的是,打印线程创建树pstree
如何?
art*_*ise 18
有一个名为的perl脚本strace-graph
.这是github的一个版本.它与crosstool-ng版本的编译器一起打包.它适用于我甚至使用跨平台.
$ ./strace -f -q -s 100 -o app.trc -p 449
$ tftp -pr app.trc 172.0.0.133
Run Code Online (Sandbox Code Playgroud)
$ ./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%
Run Code Online (Sandbox Code Playgroud)
输出可用于帮助导航主跟踪日志.
sta*_*ate 17
我看不出一个简单的方法:
您可以使用该-ff
选项-o filename
生成多个文件(每个pid一个).
例如:
strace -o process_dump -ff ./executable
grep clone process_dump*
Run Code Online (Sandbox Code Playgroud)
这将有助于你看到哪个父母创建了什么.也许这会对你有所帮助 - 至少你可以向后搜索.