2012-05-18 63 views
7

当在多线程程序中,我得到运行结果strace的像这样:strace的多线程程序

[pid 14778] futex(0x7fd8082f266c, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fd8082f2668, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1} <unfinished ...> 
[pid 14780] <... futex resumed>)  = 0 

注意的参数是与<unfinished...>一条线,其结果是与<...resumed>另一条线。没有与他们的结果相关的论点会降低strace的效用。跟踪多线程程序时,是否可以使strace在同一行上打印结果和参数?

+1

如果我使用-ff -o输出到文件我可以得到我要找的结果。但是,我宁愿将输出写入我的控制台而不是一百个不同的文件。 :) – benmmurphy

+0

..但有一个年代学问题:特定的互斥操作确实在一个线程中启动,阻塞该线程,并在另一个线程中返回。 – pjc50

+0

我不介意它是否打印出来:syscall(args)=未完成,恢复:syscall(args)=结果。这没有按时间顺序排列的问题,我仍然可以将参数与结果相匹配。问题是现在打印的第二行是系统调用(恢复)=结果,这对我来说并不是很有用。 – benmmurphy

回答

9

使用strace -ff cmd 2> log.out

+0

这不适合我。可能是因为我有一个老版本的strace :( – benmmurphy