Câu hỏi Làm thế nào để theo dõi quá trình con bằng cách sử dụng strace?


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.

Có một thủ thuật hay công cụ để nhanh chóng tìm ra sợi nào đã tạo ra sợi khác? Hoặc tốt hơn, in cây của các sáng tạo chủ đề như pstree?


76
2017-10-29 15:09


gốc


Có vẻ như câu trả lời @JeRog phải được chấp nhận. - jww


Các câu trả lời:


strace -f để theo dõi quá trình con fork()ed.


77
2018-06-11 07:36





Có một kịch bản perl được gọi là strace-graph. Đây là phiên bản từ 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 Linux ARM.

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

Hộp Linux X86_64.

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


16
2018-05-15 18:33



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


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

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

ví dụ:

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

sẽ giúp bạn biết cha mẹ nào đã tạo ra cái 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.


13
2018-04-29 20:05