2012-05-18 27 views
7

Khi chạy strace trên một chương trình đa luồng tôi nhận được kết quả như thế này:Chương trình strace Multithreaded

[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 

Thông báo các đối số là trên cùng một dòng với <unfinished...> và kết quả là ngày khác phù hợp với <...resumed>. Không có đối số tương quan với kết quả của họ làm giảm tiện ích của strace. Có thể làm cho strace in các kết quả và các đối số trên cùng một dòng khi truy tìm một chương trình đa luồng?

+1

nếu tôi xuất sang tệp bằng -ff -o tôi có thể nhận được kết quả mà tôi đang tìm kiếm. Tuy nhiên, tôi muốn viết đầu ra cho bàn điều khiển của tôi thay vì một trăm tập tin khác nhau. :) – benmmurphy

+0

.. nhưng có một vấn đề niên đại: rằng hoạt động mutex cụ thể thực sự bắt đầu trong một luồng, chặn luồng đó và gây ra sự trả về trong một chuỗi khác. – pjc50

+0

tôi sẽ không quan tâm nếu nó in: syscall (args) = chưa hoàn thành, tiếp tục: syscall (args) = kết quả. mà không có một vấn đề thời gian và tôi vẫn có thể kết hợp args với một kết quả. vấn đề là dòng thứ hai nó in tại thời điểm này là syscall (nối lại) = kết quả mà không phải là rất hữu ích cho tôi. – benmmurphy

Trả lời

9

sử dụng strace -ff cmd 2> log.out

+0

điều này không phù hợp với tôi. có lẽ vì tôi có một phiên bản cũ của strace :( – benmmurphy

Các vấn đề liên quan