2012-05-18 17 views
7

Uruchamiając strace na wielowątkowego programu otrzymuję wyniki takie jak ten:Strace wielowątkowy program

[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 

Wskazówka argumenty są w jednej linii z <unfinished...> a wynik jest na innej linii z <...resumed>. Brak argumentów skorelowanych z ich wynikami zmniejsza użyteczność strace. Czy jest możliwe, aby strace drukowało wyniki i argumenty w tym samym wierszu podczas śledzenia programu wielowątkowego?

+1

gdybym wyjście do plików przy użyciu -ff -o mogę uzyskać wynik szukam. Jednak wolałbym zapisać dane wyjściowe na mojej konsoli zamiast setki różnych plików. :) – benmmurphy

+0

.. ale jest problem z chronologią: ta konkretna operacja mutex naprawdę zaczyna się w jednym wątku, blokuje ten wątek i powoduje powrót w innym wątku. – pjc50

+0

Nie miałbym nic przeciwko wydrukowaniu: syscall (args) = niedokończone, wznowione: syscall (args) = result. to nie ma problemu chronologicznego i wciąż mogę dopasować argumenty do wyniku. Problem polega na tym, że druga linia, którą drukuje w tej chwili, to syscall (wznowiona) = wynik, który nie jest dla mnie zbyt użyteczny. – benmmurphy

Odpowiedz

9

użycie strace -ff cmd 2> log.out

+0

to nie działa dla mnie. prawdopodobnie dlatego, że mam starą wersję strace :( – benmmurphy