2012-05-18 24 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...>と1本のライン上にあり、その結果は<...resumed>で別の行にあることに注意してください。それらの結果と相関する引数を持たないことは、straceの有用性を低下させる。 multithreadedプログラムをトレースするときに、straceが結果と引数を同じ行に出力することは可能ですか?

+1

-ff -oを使用してファイルに出力すると、私が探している結果が得られます。しかし、100種類のファイルではなく、コンソールに出力を書きたいと思っています。 :) – benmmurphy

+0

..しかし、年代順の問題があります:その特定のミューテックス操作は本当にあるスレッドで開始し、そのスレッドをブロックし、別のスレッドでリターンを引き起こします。 – pjc50

+0

もしそれが印刷されたら、私は気にしません。syscall(args)=未完了、再開:syscall(args)= result。それは時系列的な問題を抱えておらず、私は依然として結果にargsを一致させることができます。問題は、現時点で印刷されている2行目がsyscall(再開)=結果で、これはあまり役に立ちません。 – benmmurphy

答えて

9

use strace -ff cmd 2> log.out

+0

これは私のためには機能しません。おそらく私はstraceの古いバージョンを持っているので、おそらく:( – benmmurphy

関連する問題