Strace ، أداة Cli لاعتراض مكالمات النظام وتسجيلها

strace- احصائيات

Strace هي أداة مساعدة CLI تُستخدم للتحقق من وجود أخطاء في النظام كما يسمح بمراقبة مكالمات النظام يستخدمه برنامج معين وجميع الإشارات التي يستقبلها. جدوى يسمح للمستخدم بمراقبة و (منذ الإصدار 4.15) التدخل في عملية التفاعل بين البرنامج والجوهربما في ذلك مكالمات النظام الجارية والنوافذ المنبثقة وتغييرات حالة العملية

أصبح تشغيله ممكنا من خلال ميزة نواة لينكس تسمى ptrace. إنه مشابه لتطبيق truss المتاح في أنظمة Unix الأخرى. يوفر برنامج Cygwin أداة مساعدة مماثلة. الاستخدام الأكثر شيوعًا هو بدء تشغيله مع البرنامج الذي يتم تتبعه ، والذي يطبع قائمة باستدعاءات النظام التي ينفذها.

من المفيد معرفة سبب فشل برنامج معينأو لأنه يبلغ عن مواقف يحاول فيها البرنامج ، على سبيل المثال ، الوصول إلى ملف غير موجود أو ليس لديه إذن قراءة بخصوصه.

من بين الخصائص التي تميز Strace ، يبرز ما يلي:

  • تكون قادرًا على تحديد مرشح اسم syscall ليتم تتبعه (باستخدام -e trace = خيار): بالاسم ، مثل clone ، fork ، vfork ؛ باستخدام إحدى المجموعات المحددة مسبقًا ، مثل٪ ipc أو٪ file ؛ أو (منذ الإصدار 4.17) باستخدام صيغة تعبير عادي ، مثل clock_ *.
  • حدد قائمة من المسارات للتتبع (على سبيل المثال -P /etc/ld.so.cache).
  • حدد قائمة بأوصاف الملفات التي يجب تفريغ مدخلات الإدخال / الإخراج الخاصة بها
  • عد وقت التنفيذ وعدد المكالمات النظامية
  • طباعة الطوابع الزمنية النسبية أو المطلقة
  • تعديل رمز الإرجاع والخطأ لمكالمات النظام المحددة وإدخال الإشارات بعد التنفيذ
  • استخراج المعلومات عن واصفات الملفات (بما في ذلك المقابس).
  • طباعة تتبع المكدس ، بما في ذلك (منذ الإصدار 4.21) رمز الطلب (-k).
  • التصفية حسب حالة إرجاع syscall
  • يدعم strace فك ترميز وسائط بعض فئات أوامر ioctl ، مثل BTRFS_ * و V4L2_ * و DM_ * و NSFS_ * و MEM * و EVIO * و KVM_ * والعديد من الفئات الأخرى.

لأن الدعامة فقط تفاصيل مكالمات النظام ، لا يمكن استخدامه لاكتشاف العديد من المشاكل مثل مصحح أخطاء الكود مثل GNU Debugger (gdb). ومع ذلك ، فهو أسهل في الاستخدام من مصحح أخطاء التعليمات البرمجية ، وهو أداة مفيدة للغاية لمسؤولي النظام. يتم استخدامه أيضًا من قبل الباحثين لإنشاء تتبع مكالمات النظام لإعادة التشغيل لاحقًا.

حول الإصدار الجديد من Strace 5.3

في الآونة الأخيرة ، تم تقديم الإصدار الجديد من الدعامة 5.3 فيه تم تغيير ترخيص الكود من BSD إلى LGPLv2.1 + و GPLv2 + للإصدار التجريبي.

يوجد أيضًا ضمن التغييرات التي تبرز دعم لتصفية مكالمات النظام عن طريق إنشاء عوامل تصفية seccomp ("–Seccomp-bpf") ، بالإضافة إلى رمز الإرجاع ("-e status = ...").

تغيير آخر برز في الإعلان عن هذا الإصدار الجديد هو أن المطورين أضافوا دعم مكالمات نظام فك تشفير pidfd_open و clone3 ، بالإضافة إلى فك تشفير محسّن لمكالمات نظام io_cancel و io_submit و s390_sthyi و syslog.

أيضا في الإعلان تم تسليط الضوء على ذلك يسرد الأمر ioctl المزامنة مع Linux 5.3 kernel

من التغييرات الأخرى المذكورة في الإعلان ، هي:

  • تحسين فك تشفير بروتوكول NETLINK_ROUTE
  • سمة ارتباط الشبكة التي تم فك تشفيرها UNIX_DIAG_UID وأوامر WDIOC_ * ioctl
  • تم تحديث القوائم الثابتة AUDIT_ * و BPF_ * و ETH_ * و KEYCTL_ * و KVM_ * و MAP_ * و SO_ * و TCP_ * و V4L2_ * و XDP_ * و * _MAGIC

كيفية تثبيت Strace 5.3 على Ubuntu ومشتقاته؟

يمكن العثور على الأداة المساعدة Strace داخل مستودعات Ubuntu ومشتقاتها ، ولكن بقدر لهذا الإصدار الجديد ، لم يتم تضمينه في المستودعات. يمكن التثبيت من خلال المستودعات بتنفيذ الأمر التالي:

sudo apt install strace

الآن بالنسبة لأولئك الذين يرغبون في تثبيت هذا الإصدار الجديد ، يجب تنزيل شفرة المصدر وتجميعها على نظامك.

يقومون بتنزيل الكود المصدري باستخدام:

git https://gitlab.com/strace/strace.git

يدخلون مع:

cd strace

وهم يجمعون مع:

./configure && make && make install

أخيرًا فيما يتعلق بالاستخدام ، يمكنك العثور على بعض الأدلة على الشبكة.


محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

كن أول من يعلق

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.