سؤال

إستعملت strace لإرفاق عملية لفترة وجيزة. أنشأت العملية 90 موضوعًا. عندما وجدت الخيط المخالف ، اضطررت إلى البحث عن خيط الأصل ، ثم الخيط الجد ، وهكذا على طول الطريق إلى عملية الجذر.

هل هناك خدعة أو أداة لمعرفة الخيط الذي تم إنشاؤه بسرعة أخرى؟ أو الأفضل من ذلك ، اطبع شجرة إبداعات الخيط مثل pstree?

هل كانت مفيدة؟

المحلول

strace -f لتتبع عملية الطفل fork()إد.

نصائح أخرى

يوجد نص Perl يسمى strace-graph. هنا نسخة من جيثب. يتم تعبئتها مع crosstool-ng إصدارات المترجمين. إنه يعمل بالنسبة لي حتى تستخدم منصة متقاطعة.

ARM Linux Box.

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

X86_64 Linux Box.

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

يمكن استخدام الإخراج للمساعدة في التنقل في سجل التتبع الرئيسي.

لا أستطيع رؤية طريقة سهلة:

يمكنك استخدام -ff الخيار مع -o filename لإنتاج ملفات متعددة (واحدة لكل PID).

على سبيل المثال:

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

هذا من شأنه أن يساعدك على معرفة أي الوالد الذي خلق ما. ربما من شأنه أن يساعدك - على الأقل بعد ذلك يمكنك البحث للخلف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top