2010-10-29 27 views
69

Tôi đã sử dụng strace để đính kèm một quy trình ngắn gọn. Quá trình tạo ra 90 chủ đề. Khi tôi tìm thấy các chủ đề vi phạm, tôi đã phải tẻ nhạt tìm kiếm các chủ đề phụ huynh, sau đó các chủ đề ông bà, và như vậy trên tất cả các cách để quá trình gốc.Làm thế nào để theo dõi quá trình con bằng cách sử dụng strace?

Có mẹo hay công cụ để nhanh chóng tìm ra chuỗi nào đã tạo chuỗi khác? Hoặc tốt hơn, in cây tạo các chủ đề như pstree?

Trả lời

12

Tôi không thể nhìn thấy một cách dễ dàng:

Bạn có thể sử dụng tùy chọn -ff với -o filename để sản xuất nhiều file (một cho mỗi pid).

ví dụ:

strace -o process_dump -ff ./executable 
grep clone process_dump* 

mà có thể giúp bạn nhìn thấy mà cha mẹ tạo ra những gì. Có lẽ điều đó sẽ giúp bạn - ít nhất thì bạn có thể tìm kiếm ngược lại.

71

strace -f để theo dõi quy trình con là fork() ed.

15

Có một tập lệnh perl có tên strace-graph. Đây là version from github. Nó được đóng gói với crosstool-ng phiên bản của trình biên dịch. Nó hoạt động cho tôi thậm chí sử dụng nền tảng chéo.

Hộp ARM Linux.

$ ./strace -f -q -s 100 -o app.trc -p 449 
$ tftp -pr app.trc 172.0.0.133 

X86_64 Hộp Linux.

$ ./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% 

Đầu ra có thể được sử dụng để giúp điều hướng nhật ký theo dõi chính.

+0

rất đẹp, đây gần như chính xác điều tôi muốn trong ít nhất vài ngày. đáng ngạc nhiên, tôi thậm chí có thể nhìn thấy nó trong của tôi/usr/share/doc/strace/example /. – mykhal

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