GoGPT Best VPN GoSearch

OnWorks فافيكون

stap - عبر الإنترنت في السحابة

قم بتشغيل stap في مزود استضافة OnWorks المجاني عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو عنصر التحكم الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


stap - مترجم / سائق البرنامج النصي systemtap

موجز


STAP [ OPTIONS ] اسم الملف [ الحجج ]
STAP [ OPTIONS ] - [ الحجج ]
STAP [ OPTIONS ] -e SCRIPT [ الحجج ]
STAP [ OPTIONS ] -l مسبار [ الحجج ]
STAP [ OPTIONS ] -L مسبار [ الحجج ]
STAP [ OPTIONS ] - تفريغ - مسبار
STAP [ OPTIONS ] - تفريغ-مسبار-الأسماء المستعارة
STAP [ OPTIONS ] - تفريغ وظائف

الوصف


إنّ كافة أنواع عهود الـ STAP البرنامج هو الواجهة الأمامية لأداة Systemtap. يقبل تعليمات التحقيق
مكتوبًا بلغة بسيطة خاصة بالمجال ، ويترجم هذه التعليمات إلى كود C ،
يقوم بتجميع كود C هذا ، وتحميل الوحدة الناتجة إلى نواة Linux قيد التشغيل أو ملف
DynInst user-space mutator ، لأداء وظائف تتبع / مسبار النظام المطلوبة. أنت
يمكن توفير البرنامج النصي في ملف مسمى (FILENAME) ، من الإدخال القياسي (استخدم - بدلاً من
FILENAME) ، أو من سطر الأوامر (باستخدام -E SCRIPT). يعمل البرنامج حتى يتم تشغيله
قاطع من قبل المستخدم ، أو إذا كان البرنامج النصي يستدعي طواعية خروج() وظيفة ، أو عن طريق
عدد كافٍ من الأخطاء البرمجية.

اللغة الموصوفة في SCRIPT لغة أدناه ، يتم كتابتها بدقة ،
معبرة ، خالية من التصريحات ، إجرائية ، صديقة للنماذج الأولية ، ومستوحاة من AWK و C.
يسمح بنقاط كود المصدر أو الأحداث في النظام لربطها بالمعالجات ، والتي
هي إجراءات فرعية يتم تنفيذها بشكل متزامن. إنه يشبه إلى حد ما من الناحية المفاهيمية
"قوائم أوامر نقطة التوقف" في ملف جدب المصحح.

OPTIONS


يدعم مترجم systemtap الخيارات التالية. أي خيار آخر يطبع قائمة
من الخيارات المدعومة. يمكن إعطاء الخيارات في سطر الأوامر ، كالمعتاد. إذا كان الملف
يوجد $ SYSTEMTAP_DIR / rc ، يتم أيضًا تحميل الخيارات من هناك وتفسيرها أولاً.
(يتم ضبط $ SYSTEMTAP_DIR افتراضيًا على $ HOME / .systemtap إذا لم يتم ضبطه.)

- استخدم الإدخال القياسي بدلاً من FILENAME المحدد كإدخال لغة اختبار ، ما لم يكن -e
النص مُعطى.

-h --مساعدة
إظهار رسالة المساعدة.

-V --الإصدار
إظهار رسالة الإصدار.

-p NUM توقف بعد تمرير NUM. الممرات مرقمة من 1 إلى 5: تحليل ، تفصيل ، ترجمة ،
تجميع وتشغيل. انظر معالجة قسم لمزيد من التفاصيل.

-v زيادة الإسهاب لجميع التمريرات. إنتاج كمية أكبر من المعلومات (؟)
تكرار الخيار في كل مرة.

--vp ABCDE
زيادة الإسهاب على أساس التمرير. على سبيل المثال ، يضيف "--vp 002" وحدتين من
الإسهاب لتمرير 3 فقط. تضيف المجموعة "-v --vp 00004" وحدة واحدة من الإسهاب
لجميع التمريرات ، و 4 أخرى لتمرير 5.

-k احتفظ بالدليل المؤقت بعد كل المعالجة. قد يكون هذا مفيدًا من أجل
فحص كود C الذي تم إنشاؤه ، أو لإعادة استخدام كائن kernel المترجم.

-g وضع المعلم. تمكين تحليل البنيات غير الآمنة على مستوى الخبراء مثل C.

-P وضع البحث التمهيدي. هذا يعادل --prologue-search = always.
قم بتنشيط الأساليب البحثية للتغلب على معلومات تصحيح الأخطاء غير الصحيحة للوظيفة
متغيرات السياق $ المعلمة.

-u الوضع غير الأمثل. تعطيل حذف التعليمات البرمجية غير المستخدمة والعديد من التحسينات الأخرى أثناء
التفصيل / الترجمة.

-w وضع التحذيرات المكبوتة. تعطيل كافة رسائل التحذير.

-W تعامل مع جميع التحذيرات على أنها أخطاء.

-b استخدم الوضع المجمع (ملفات percpu) لنقل البيانات من kernel إلى المستخدم. استخدم ال ركبة دمج
برنامج لمضاعفتهم معا مرة أخرى في وقت لاحق.

-t اجمع معلومات التوقيت عن عدد مرات تنفيذ المسبار ومتوسط ​​المقدار
من الوقت الذي يقضيه في كل نقطة مسبار. يُظهر أيضًا اشتقاق كل نقطة استقصاء.

-sNUM استخدم المخازن المؤقتة NUM ميغا بايت لنقل البيانات من kernel إلى المستخدم. على متعدد المعالجات في
الوضع المجمع ، هذه كمية لكل معالج.

-I DIR أضف الدليل المحدد إلى دليل بحث tapset. انظر وصف
تمرير 2 للحصول على التفاصيل.

-D الاسم = القيمة
أضف توجيه المعالج الأولي C إلى ملف Makefile الوحدة النمطية. يمكن استخدام هذه
لتجاوز الحد المحددات الموضحة أدناه.

-B الاسم = القيمة
أضف الأمر make المعطى إلى استدعاء make make في بناء وحدة kernel. هؤلاء
يمكن استخدامها لإضافة أو تجاوز خيارات kconfig.

-a قوس
استخدم وضع الترجمة المتقاطعة للعمارة المستهدفة المحددة. هذا يتطلب
الوصول إلى برنامج التحويل البرمجي المتقاطع وشجرة بناء النواة ، ويتماشى مع -B
CROSS_COMPILE = بادئة أداة القوس- و -r / بناء / شجرة خيارات.

--مودلم الاسم = القيمة
قم بإضافة زوج الاسم / القيمة كاستدعاء ماكرو MODULE_INFO إلى الوحدة النمطية التي تم إنشاؤها. هذا
قد يكون من المفيد إعلام أو تجاوز عمليات التحقق المختلفة المتعلقة بالوحدة النمطية في النواة.

-G الاسم = القيمة
يعيّن قيمة المتغير الشامل NAME إلى VALUE عند استدعاء staprun. هذا
ينطبق على المتغيرات العددية المعلنة عالمية في البرنامج النصي / tapset.

-R DIR ابحث عن مصادر وقت تشغيل systemtap في الدليل المحدد.

-r / DIR
بناء للنواة في شجرة بناء معينة. يمكن أيضًا ضبطه مع SYSTEMTAP_RELEASE
متغيرات البيئة.

-r RELEASE
بناء للنواة في بناء شجرة / lib / modules / RELEASE / build. يمكن أيضًا ضبطه مع
القادم SYSTEMTAP_RELEASE متغيرات البيئة.

-m MODULE
استخدم الاسم المحدد لوحدة كائن kernel التي تم إنشاؤها ، بدلاً من اسم فريد
اسم عشوائي. يتم نسخ وحدة كائن kernel التي تم إنشاؤها إلى الحالي
الدليل.

-d MODULE
أضف معلومات رمز / فك للوحدة النمطية المحددة في وحدة كائن kernel.
قد يتيح هذا إمكانية التتبع الرمزي من تلك الوحدات / البرامج ، حتى لو كانت تفعل ذلك
ليس لديها مسبار صريح يوضع فيها.

--ldd أضف رمز / استرخاء المعلومات لجميع المكتبات المشتركة التي يشتبه ldd في أن تكون
ضرورية للثنائيات الخاصة بمساحة المستخدم التي يتم فحصها أو إدراجها مع الخيار -d.
تحذير: هذا يمكن أن يجعل وحدات المسبار أكبر بكثير.

- جميع الوحدات
يعادل تحديد "-dkernel" و "-d" لكل وحدة نمطية kernel
محملة حاليا. تحذير: هذا يمكن أن يجعل وحدات المسبار أكبر بكثير.

-o FILE
إرسال الإخراج القياسي إلى ملف مسمى. في الوضع المجمع ، ستبدأ ملفات percpu بـ
FILE_ (FILE_cpu with -F) متبوعًا برقم وحدة المعالجة المركزية. هذا يدعم com.strftime(3)
تنسيقات FILE.

-c CMD ابدأ المجسات ، وقم بتشغيل CMD ، واخرج عند انتهاء CMD. هذا أيضا له تأثير
تشغيل تحديد الهدف () إلى pid للأمر.

-x PID يعين الهدف () على PID. هذا يسمح لكتابة البرامج النصية التي يتم ترشيحها على ملف
عملية. تعمل البرامج النصية بشكل مستقل عن عمر PID.

-e SCRIPT
قم بتشغيل البرنامج النصي المحدد في سطر الأوامر.

-E SCRIPT
قم بتشغيل البرنامج النصي المحدد. يتم تشغيل هذا البرنامج النصي بالإضافة إلى النص الرئيسي
المحدد ، من خلال -e ، أو كملف نصي. يمكن تكرار هذا الخيار للتشغيل
نصوص متعددة ، ويمكن استخدامها في وضع القائمة (-l / -L).

-l مسبار
بدلاً من تشغيل برنامج نصي للمسبار ، ما عليك سوى سرد كافة نقاط الفحص المطابقة المتوفرة
نقطة التحقيق الفردية المعطاة. قد يتضمن النمط أحرف البدل والأسماء المستعارة ، ولكن
لا نقاط فحص متعددة مفصولة بفواصل. سيشير رمز نتيجة العملية
فشل إذا لم تكن هناك مباريات.

-L مسبار
على غرار "-l" ، لكن ضع قائمة بنقاط التحقيق والمتغيرات المحلية على مستوى البرنامج النصي.

-F بدون خيار -o ، قم بتحميل الوحدة وابدأ المجسات ، ثم افصلها عن الوحدة
ترك المسابر قيد التشغيل. باستخدام الخيار -o ، قم بتشغيل staprun في الخلفية كخادم
وإظهار رقم التعريف الخاص به.

-S الحجم [، N]
يضبط الحجم الأقصى لملف الإخراج والحد الأقصى لعدد ملفات الإخراج. لو
سيتجاوز حجم ملف الإخراج المقاس ، يقوم systemtap بتبديل ملف الإخراج إلى
الملف التالي. وإذا تجاوز عدد ملفات الإخراج N ، يزيل systemtap ملف
أقدم ملف إخراج. يمكنك حذف الوسيطة الثانية.

- سكيب بادفارس
تجاهل متغيرات السياق غير القابلة للحل أو التي يتعذر الوصول إليها في وقت التشغيل واستبدل بـ
0 ، بدون أخطاء.

--مقدمة البحث[=متى]
وضع البحث التمهيدي. قم بتنشيط الاستدلال للتغلب على تصحيح الأخطاء غير الصحيح
معلومات لمعلمة الوظيفة $ متغيرات السياق. متى يمكن أن يكون إما
"أبدًا" أو "دائمًا" أو "تلقائي" (أي تم تمكينه بواسطة الاستدلال). إذا كان WHEN مفقودًا ، إذن
يفترض "دائما". إذا كان الخيار مفقودًا ، فسيتم افتراض "تلقائي".

- أخطاء معالج الدعم
لف كل معالجات المجسات في شيء كهذا

حاول {...} التقاط {التالي}

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

--متناسق VERSION
قم بإلغاء لغة البرنامج النصي الحديثة أو التغييرات التي لا تتوافق مع النص المعطى
إصدار أقدم من systemtap. قد يكون هذا مفيدًا إذا كان البرنامج النصي Systemtap أقدم بكثير
فشل في الجري. راجع قسم الإهمال لمزيد من التفاصيل.

- تحقق من الإصدار
يستخدم هذا الخيار للتحقق مما إذا كان البرنامج النصي النشط يحتوي على أي بنيات قد تكون كذلك
إصدار محدد من systemtap. راجع قسم الإهمال لمزيد من التفاصيل.

--ذاكرة التخزين المؤقت النظيفة
يقوم هذا الخيار بتقليم الإدخالات التي لا معنى لها من دليل ذاكرة التخزين المؤقت. يتم ذلك عادة
تلقائيًا بعد عمليات التشغيل الناجحة ، ولكن هذا الخيار سيؤدي إلى عملية التنظيف
يدويًا ثم الخروج. راجع قسم التخزين المؤقت لمزيد من التفاصيل حول ذاكرة التخزين المؤقت
حدود.

--اللون[=متى], --لون[=متى]
يتحكم هذا الخيار في تلوين رسائل الخطأ. عندما يمكن أن تكون إما "أبدًا" ،
"دائمًا" أو "تلقائي" (أي تمكين فقط إذا كان في محطة طرفية). إذا كان WHEN مفقودًا ، إذن
يفترض "دائما". إذا كان الخيار مفقودًا ، فسيتم افتراض "تلقائي".

يمكن تعديل الألوان باستخدام متغير البيئة SYSTEMTAP_COLORS. التنسيق
يجب أن يكون بالشكل key1=val1:key2=val2:key3=val3 ...إلخ. المفاتيح الصالحة هي "خطأ" ،
"تحذير" و "مصدر" و "علامة إقحام" و "رمز مميز". تشكل القيم Select Graphic
معلمة (معلمات) التسليم (SGR). راجع وثائق الجهاز الخاص بك للحصول على
SGRs يدعمها. كمثال ، سيتم التعبير عن الألوان الافتراضية كـ
error=01;31:warning=00;33:source=00;34:caret=01:token=01. إذا كانت SYSTEMTAP_COLORS هي
غائب ، سيتم استخدام الألوان الافتراضية. إذا كان فارغًا أو غير صالح ، يكون التلوين
إيقاف.

--تعطيل ذاكرة التخزين المؤقت
يقوم هذا الخيار بتعطيل كافة استخدامات دليل ذاكرة التخزين المؤقت. لن يتم قراءة أي ملفات
من أو مكتوبة في ذاكرة التخزين المؤقت.

- مخبأ السم
يعامل هذا الخيار الملفات الموجودة في دليل ذاكرة التخزين المؤقت على أنها غير صالحة. لن تتم قراءة أي ملفات
من ذاكرة التخزين المؤقت ، ولكن ستظل كتابة الملفات الناتجة من هذا التشغيل إلى ملف
مخبأ. يُقصد بهذا كأداة مساعدة لاستكشاف الأخطاء وإصلاحها عندما يبدو أن سلوك stap المخزن مؤقتًا
يسيء التصرف.

--امتياز[=ستابوسر | =ستابسيس | =ستابديف]
يرشد هذا الخيار STAP لفحص البرنامج النصي بحثًا عن التركيبات التي
غير مسموح به لمستوى الامتياز المحدد (انظر غير مميّز المستخدمين).
فشل التجميع إذا تم استخدام أي من هذه التركيبات. لو ستابوسر or ستابسيس .
المحدد عند استخدام خادم ترجمة (انظر --استخدام الخادم) ، سيقوم الخادم بفحص
البرنامج النصي ، وإذا نجحت عملية التجميع ، فسيقوم الخادم بتشفير توقيع
الناتجة عن وحدة kernel ، والتي تؤكد أنها آمنة للاستخدام من قبل المستخدمين في
مستوى الامتياز المحدد.

If --امتياز لم يتم تحديده ، -pN لم يتم تحديده بـ N <5 ، و
المستخدم الداعي ليس كذلك جذر، وليس عضوًا في المجموعة ستابديف، ثم STAP
سيضيف تلقائيًا ملف --امتياز الخيار للخيارات بالفعل
محدد.

- محظور
هذا الخيار يعادل - الامتياز = stapusr.

--استخدام الخادم[=HOSTNAME[:ميناء] | =IP_ADDRESS[:ميناء] | =CERT_SERIAL]
حدد خادم (خوادم) التحويل البرمجي لاستخدامه في التجميع و / أو بالاشتراك مع
- قائمة الخوادم و - خوادم الثقة (انظر أدناه). إذا لم يتم توفير حجة ، ثم
الافتراضي في وضع عدم الامتياز (انظر --امتياز) هو تحديد الخوادم المتوافقة
التي يتم الوثوق بها كأقران SSL وكموقعين للوحدات النمطية ومتصلين حاليًا.
بخلاف ذلك ، يكون الخيار الافتراضي هو تحديد الخوادم المتوافقة والموثوق بها على أنها SSL
أقرانهم ومتصلون حاليًا. --استخدام الخادم قد يتم تحديدها أكثر من مرة ، وفيها
في حالة تراكم قائمة الخوادم بالترتيب المحدد. قد تكون الخوادم
المحدد حسب اسم المضيف أو عنوان IP أو الرقم التسلسلي للشهادة (تم الحصول عليه باستخدام
- قائمة الخوادم). يتم استخدام الأخير بشكل شائع عند إضافة الثقة أو إبطالها
الخادم (انظر - خوادم الثقة أقل). إذا تم تحديد الخادم بواسطة اسم المضيف أو IP
العنوان ، ثم يمكن تحديد رقم منفذ اختياري. هذا مفيد ل
الوصول إلى الخوادم التي ليست على الشبكة المحلية أو لتحديد معين
الخادم.

قد تكون عناوين IP هي عناوين IPv4 أو IPv6.

إذا كان عنوان IPv6 معين رابطًا محليًا وموجودًا على أكثر من واجهة ،
يمكن تحديد الواجهة المقصودة عن طريق إلحاق العنوان بنسبة مئوية
علامة (٪) متبوعة باسم الواجهة المقصود. على سبيل المثال،
"fe80::5eff:35ff:fe07:55ca%eth0".

من أجل تحديد رقم منفذ بعنوان IPv6 ، من الضروري إرفاقه
عنوان IPv6 بين قوسين مربعين ([]) لفصل رقم المنفذ عن
باقي العنوان. على سبيل المثال ، "[fe80 :: 5eff: 35ff: fe07: 55ca]: 5000" أو
"[fe80::5eff:35ff:fe07:55ca%eth0]:5000".

If --استخدام الخادم لم يتم تحديده ، -pN لم يتم تحديده بـ N <5 ، و
المستخدم الداعي لا جذر، ليس عضوا في المجموعة ستابديف، بل هو عضو
من المجموعة ستابوسر، ثم STAP سيضيف تلقائيا --استخدام الخادم للخيارات
محدد بالفعل.

--استخدام الخادم عند الخطأ[=نعم |=لا]
يوجه stap لإعادة محاولة تجميع نص باستخدام خادم ترجمة إذا
فشل التجميع على المضيف المحلي بطريقة تشير إلى احتمال حدوث ذلك
تنجح باستخدام الخادم. إذا لم يتم تحديد هذا الخيار ، يكون الخيار الافتراضي هو لا. إذا كان الجواب لا
يتم توفير الوسيطة ، ثم الافتراضي هو نعم . ستتم إعادة محاولة التجميع لـ
أنواع معينة من الأخطاء (مثل البيانات أو الموارد غير الكافية) التي قد لا تحدث
أثناء إعادة التجميع بواسطة خادم تجميع. سيتم تحديد خوادم الترجمة
تلقائيًا لمحاولة إعادة التجميع كما لو --استخدام الخادم تم تحديده بـ
لا حجج.

- قائمة الخوادم[= الخوادم]
عرض حالة المطلوب الخوادم، حيث الخوادم مفصولة بفاصلة
قائمة سمات الخادم. يتم دمج قائمة السمات لتصفية قائمة
عرض الخوادم. السمات المدعومة هي:

الكل يحدد جميع الخوادم المعروفة (أقران SSL الموثوق بهم ، وموقعو الوحدات الموثوق بهم ،
خوادم عبر الإنترنت).

محدد
يحدد الخوادم المحددة باستخدام --استخدام الخادم.

online يقوم بتصفية الإخراج عن طريق الاحتفاظ بالمعلومات حول الخوادم
حاليا على الموقع.

افضل
يقوم بتصفية الإخراج من خلال الاحتفاظ بمعلومات حول الخوادم الموثوق بها
كأقران SSL.

الموقع يقوم بتصفية الإخراج من خلال الاحتفاظ بمعلومات حول الخوادم الموثوق بها
كموقعين وحدة (انظر --امتياز).

متوافق
يقوم بتصفية الإخراج عن طريق الاحتفاظ بالمعلومات حول الخوادم
متوافق مع إصدار kernel الحالي والهندسة المعمارية.

إذا لم يتم تقديم أي وسيطة ، فإن القيمة الافتراضية هي محدد. إذا لم تكن هناك خوادم
المحدد باستخدام --استخدام الخادم، ثم الخوادم الافتراضية لـ --استخدام الخادم مدرجة.

نلاحظ أن - قائمة الخوادم يستخدم avahi-daemon خدمة لاكتشاف الخوادم عبر الإنترنت. لو
هذه الخدمة غير متوفرة ، إذن - قائمة الخوادم ستفشل في اكتشاف أي online
الخوادم. من أجل - قائمة الخوادم لاكتشاف الخوادم التي تستمع إلى عناوين IPv6 ،
القادم avahi-daemon ملف التكوين /etc/avahi/avahi-daemon.conf يجب أن يحتوي على
نشط "use-ipv6 = نعم" سطر. يجب إعادة تشغيل الخدمة بعد إضافة هذا الخط
من أجل تمكين IPv6.

- خوادم الثقة[= TRUST_SPEC]
منح أو سحب الثقة في خوادم الترجمة ، المحددة باستخدام --استخدام الخادم كما هو محدد
بواسطة TRUST_SPEC ، حيث TRUST_SPEC عبارة عن قائمة مفصولة بفواصل تحدد الثقة
الذي سيتم منحه أو إلغاؤه. العناصر المدعومة هي:

SSL الثقة في الخوادم المحددة كأقران SSL.

الموقع ثق في الخوادم المحددة كموقّعين للوحدات النمطية (انظر --امتياز). فقط الجذر
يمكن أن تحدد الموقع.

جميع المستخدمين
منح الثقة كنظير SSL لجميع المستخدمين على المضيف المحلي. الافتراضي هو
لمنح الثقة كنظير SSL للمستخدم الحالي فقط. الثقة كوحدة نمطية
يُمنح الموقع دائمًا لجميع المستخدمين. يمكن تحديد الجذر فقط جميع المستخدمين.

سحب إبطال الثقة المحددة. الافتراضي هو منحها.

لا موجه
لا تطلب من المستخدم التأكيد قبل تنفيذ المطلوب
فعل. الافتراضي هو مطالبة المستخدم للتأكيد.

إذا لم يتم تقديم أي وسيطة ، فإن القيمة الافتراضية هي SSL. إذا لم يتم تحديد خوادم
استخدام --استخدام الخادم، فلن يتم منح أي ثقة أو إبطالها.

ما لم لا موجه تم تحديده ، سيُطلب من المستخدم تأكيد الثقة
يتم منحها أو إلغاؤها قبل تنفيذ العملية.

- تفريغ - مسبار
لتفريغ قائمة أنواع المجسات والمخارج المدعومة. لو - الامتياز = stapusr هو أيضا
المحدد ، ستقتصر القائمة على أنواع الفحص المتاحة للمستخدمين غير المتميزين.

- تفريغ-مسبار-الأسماء المستعارة
لتفريغ قائمة بجميع الأسماء المستعارة للمسبار الموجودة في ملفات المكتبة ومخارجها.

- تفريغ وظائف
تفريغ قائمة بجميع الوظائف الموجودة في ملفات المكتبة ومخارجها. يشمل أيضًا الخاصة بهم
المعلمات والأنواع. تشير دالة من النوع "غير معروف" إلى وظيفة تقوم بذلك
لا ترجع قيمة. لاحظ أنه قد لا يتم حل جميع أنواع الوظائف / المعلمات
(تظهر هذه أيضًا بواسطة "غير معروف"). هذه الميزات تستهلك الكثير من الذاكرة و
وبالتالي قد لا تعمل بشكل صحيح مع --استخدام الخادم إذا فرض الخادم الهدف حدًا
على ذاكرة العملية (أي من خلال ~ stap-server / .systemtap / rc ملف الضبط،
انظر تعريف خادم الركاب(8)).

--التحكم عن بعد URL
اضبط هدف التنفيذ على المضيف المحدد. يمكن تكرار هذا الخيار للاستهداف
أهداف تنفيذ متعددة. يتم إكمال التمريرات 1-4 محليًا كالمعتاد للبناء
البرنامج النصي ، ثم تمرير 5 سوف ينسخ الوحدة إلى الهدف وتشغيلها.
تتضمن نماذج URL المقبولة ما يلي:

[USER @] HOSTNAME, ssh: // [USER @] HOSTNAME
يستخدم هذا الوضع ssh ، اختياريًا باستخدام اسم مستخدم لا يتطابق مع اسم المستخدم الخاص بك. اذا كان
ملف ssh_config المخصص قيد الاستخدام ، أضف إرسال لانج ليستعيد
وظيفة التدويل.

libvirt: // المجال, libvirt: // المجال / LIBVIRT_URI
يستخدم هذا الوضع com.stapvirt لتنفيذ البرنامج النصي على مجال يديره
libvirt. اختياريًا ، قد يتم تحديد LIBVIRT_URI للاتصال بملف
سائق و / أو مضيف بعيد. على سبيل المثال ، للاتصال المحلي بامتياز
سائق QEMU ، استخدم:

- remote libvirt: // MyDomain / qemu: /// system

انظر الصفحة فيhttp://libvirt.org/uri.html> لمعرفات URI المدعومة. انظر أيضا
com.stapvirt(1) لمزيد من المعلومات حول كيفية تحضير المجال للركبة
التحقيق.

يونيكس: PATH
هذا الوضع يتصل بمقبس UNIX. يمكن استخدام هذا مع ميزة QEMU-
منفذ تسلسلي لتنفيذ البرامج النصية داخل جهاز ظاهري قيد التشغيل.

مباشر://
وضع الاسترجاع الخاص للتشغيل على المضيف المحلي.

- بادئة بعيدة
بادئة كل سطر من الإخراج البعيد بـ "N:" ، حيث N هو فهرس جهاز التحكم عن بُعد
هدف التنفيذ الذي نشأ منه السطر المحدد.

--download-debuginfo[= خيار]
تمكين أو تعطيل أو تعيين مهلة لميزة تنزيل معلومات التصحيح التلقائي
مُقدم من abrt كما هو محدد بواسطة OPTION ، حيث يكون OPTION واحدًا مما يلي:

نعم تمكين التنزيل التلقائي لمعلومات التصحيح بدون مهلة. نفس الشئ
على أنه لا يوفر قيمة OPTION لـ --download-debuginfo

لا تعطيل التنزيل التلقائي لمعلومات التصحيح بشكل صريح. هذا هو نفس
عدم استخدام الخيار على الإطلاق.

تطلب اعرض إخراج abrt ، واسأل قبل متابعة التنزيل. لن يكون هناك مهلة
تعيين.


حدد المهلة كرقم موجب لإيقاف التنزيل إذا كان يستغرق
طويل جدا.

- حدود-= NUM
حدد الحجم الأقصى للذاكرة الظاهرية للعملية (مساحة العنوان) بالبايت.
إذا لم يتم تحديد أي شيء ، فلن يتم فرض أي قيود.

- حدود وحدة المعالجة المركزية= NUM
حدد وقت وحدة المعالجة المركزية بالثواني. إذا لم يتم تحديد أي شيء ، فلا حدود
مفروضة.

--Rlimit-nproc= NUM
حدد الحد الأقصى لعدد العمليات التي يمكن إنشاؤها. إذا لم يكن هناك شيء
محدد ، لا توجد حدود مفروضة.

- حدود المكدس= NUM
حدد الحد الأقصى لحجم مكدس العملية بالبايت. إذا لم يتم تحديد أي شيء ،
لا حدود مفروضة.

- حدود fsize= NUM
حدد الحجم الأقصى للملفات التي قد تنشئها العملية بالبايت. إذا لم يكن هناك شيء
محدد ، لا توجد حدود مفروضة.

- الجذور= DIR
حدد دليل sysroot حيث توجد الملفات الهدف (الملفات التنفيذية والمكتبات وما إلى ذلك)
تقع. مع -r RELEASE، سيتم البحث في sysroot عن النواة المناسبة
بناء الدليل. مع -r / DIR، ومع ذلك ، لن يتم استخدام sysroot للعثور على ملف
بناء النواة.

- سينف= VAR = VALUE
قم بتوفير قيمة بديلة لمتغير بيئة حيث تكون القيمة على جهاز تحكم عن بعد
يختلف النظام. من المفترض أن تكون متغيرات المسار (مثل PATH و LD_LIBRARY_PATH)
نسبة إلى الدليل المقدم بواسطة - الجذور، إذا قدمت.

- حدود وقت الدعم
تعطيل -DSTP_OVERLOAD الخيارات ذات الصلة وكذلك -DMAXACTION و -DMAXTRYLOCK.
يتطلب هذا الخيار وضع المعلم.

--مدة العرض= الوضع
اضبط وضع وقت تشغيل pass-5. الخيارات الصالحة هي نواة (افتراضي) و داينست. شاهد
ALTERNATE عادات أدناه لمزيد من المعلومات.

- دينينست
الاختزال لـ - وقت التشغيل = داينست.

- حفظ الجلباب
على الأجهزة التي تتطلب SystemTap لبناء وحدة uprobes الخاصة بها (النواة السابقة
إلى الإصدار 3.5) ، يوجه هذا الخيار SystemTap إلى حفظ نسخة من الوحدة أيضًا
في الدليل الحالي (إنشاء دليل "uprobes" جديد أولاً).

--مساحات الأسماء المستهدفة= PID
السماح لمجموعة من مساحات الأسماء المستهدفة ليتم تعيينها بناءً على مساحات الأسماء المحددة
PID في. هذا مخصص لوظائف Tapset المدركة لمساحة الاسم. إذا كانت مساحات الأسماء الهدف
لم يتم تعيين الهدف الافتراضي لمساحات أسماء عملية stap.

الحجج


يتم تمرير أي وسيطات إضافية في سطر الأوامر إلى محلل البرنامج النصي لـ
الاستبدال. انظر أدناه.

SCRIPT لغة


تشبه لغة البرنامج النصي systemtap AWK و C. هناك نوعان رئيسيان في الخارج
يبني: المجسات والوظائف. ضمن هذه العبارات والعبارات تستخدم C-like
بناء جملة المشغل والأسبقية.

يمكنك تحويل أي لحظة سعيدة إلى ذكرى ثمينة وخالدة – احتفظ بها على شكل صورة أو مقطع فيديو باستخدام الكاميرا الخلفية المضمنة. ومن خلال اتصال Bluetooth، يمكنك مشاركة الملفات ذات المحتوى العزيز على قلبك مع أجهزة المقربين منك. بناء الجملة
تم تجاهل المسافات. يتم دعم ثلاثة أشكال من التعليقات:
# ... نمط قذيفة ، حتى نهاية السطر ، باستثناء $ # و @ #
// ... نمط C ++ ، حتى نهاية السطر
/* ... سي ستايل ... */
تكون الأحرف الحرفية إما سلاسل محاطة بعلامات اقتباس مزدوجة (تمر عبر حرف C المعتاد
رموز ذات خطوط مائلة للخلف ، ومع سلاسل حرفية متجاورة ملتصقة ببعضها البعض ، كما هو الحال في C) ،
أو أعداد صحيحة (في النظام العشري ، أو الست عشري ، أو الثماني ، باستخدام نفس الترميز كما في C). الجميع
السلاسل محدودة الطول لبعض القيمة المعقولة (بضع مئات من البايتات). عدد صحيح
هي كميات موقعة 64 بت ، على الرغم من أن المحلل اللغوي يقبل أيضًا (ويلتف حول) القيم
فوق الموجب 2 ** 63.

بالإضافة إلى ذلك ، يمكن إدراج وسيطات البرنامج النصي المعطاة في نهاية سطر الأوامر. يستخدم
$1 $ للإدخال غير مقتبس ، @1 @ للإدراج كسلسلة حرفية. ال
عدد الحجج يمكن الوصول إليها من خلال $# (كرقم غير مسعّر) أو من خلال @#
عدد مقتبس). يمكن استخدام هذه الرموز في أي مكان قد يبدأ فيه الرمز المميز ، بما في ذلك داخل
مرحلة ما قبل المعالجة. الإشارة إلى رقم وسيطة يتجاوز ما تم تقديمه بالفعل هو
خطأ.

المعالجة المسبقة
يتم تشغيل مرحلة المعالجة المسبقة المشروطة البسيطة كجزء من التحليل. الشكل العام هو
على غرار الشرط ? exp1 : عامل التشغيل الثلاثي exp2:

%( CONDITION %? رموز حقيقية %)
%( CONDITION %? رموز حقيقية %: رموز زائفة %)

يكون CONDITION إما تعبيرًا يتم تحديد تنسيقه بواسطة أول كلمة أساسية له ، أو
مقارنة حرفية لسلسلة أو مقارنة حرفية رقمية. يمكن أن تتكون أيضا من
العديد من البدائل والاقتران من CONDITIONs (يُقصد بها كما في الجملة السابقة) باستخدام ||
و && على التوالي. ومع ذلك ، لم يتم دعم الأقواس بعد ، لذا تذكر ذلك
الاقتران له الأسبقية على البديل المهم.

إذا كان الجزء الأول هو المعرف kernel_vr or kernel_v للإشارة إلى إصدار النواة
رقم ، مع ("2.6.13-1.322FC3smp") أو بدون ("2.6.13") لاحقة رمز الإصدار ، ثم
الجزء الثاني هو أحد عوامل المقارنة الرقمية الستة القياسية <, <=, ==, !=, >,
و >=، والجزء الثالث عبارة عن سلسلة حرفية تحتوي على إصدار إصدار بنمط RPM
قيمة. يعتبر الشرط مستوفيا إذا كان إصدار النواة المستهدفة (مثل
تم تجاوزه اختياريًا بواسطة -r option) بسلسلة الإصدار المحددة. ال
يتم إجراء المقارنة بواسطة دالة glibc سترفرسسمب. كحالة خاصة ، إذا كان
العامل هو من أجل المساواة البسيطة (==) ، أو عدم المساواة (!=) ، والجزء الثالث يحتوي على أي
أحرف البدل (* or ? or [) ، ثم يتم التعامل مع التعبير على أنه تطابق حرف بدل (خاطئ)
حسب تقييم com.fnmatch.

من ناحية أخرى ، إذا كان الجزء الأول هو المعرف قوس للإشارة إلى المعالج
العمارة (كما تم تسميته من قبل نظام بناء النواة ARCH / SUBARCH) ، ثم الجزء الثاني هو
أحد عاملي مقارنة السلسلة == or !=، والجزء الثالث عبارة عن سلسلة
حرفية لمطابقتها. هذه المقارنة عبارة عن تطابق حرف بدل (خاطئ).

وبالمثل ، إذا كان الجزء الأول عبارة عن معرّف مثل CONFIG_ شيء للإشارة إلى النواة
خيار التكوين ، ثم الجزء الثاني هو == or !=، والجزء الثالث عبارة عن سلسلة
حرفية لمطابقة القيمة (عادةً "y" أو "m"). نواة غير موجودة أو غير محددة
يتم تمثيل خيارات التكوين بسلسلة فارغة. هذه المقارنة هي أيضا
تطابق حرف البدل (خطأ).

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

إذا كان الجزء الأول هو المعرف systemtap_privilege، يشير الاختبار إلى الامتياز
المستوى الذي تم فيه تجميع البرنامج النصي systemtap. هنا الجزء الثاني == or !=و
الجزء الثالث عبارة عن سلسلة حرفية ، إما "stapusr" أو "stapsys" أو "stapdev".

إذا كان الجزء الأول هو المعرف guru_mode، يشير الاختبار إلى ما إذا كان البرنامج النصي systemtap
يتم تجميعها باستخدام guru_mode. هنا الجزء الثاني == or !=، والجزء الثالث هو ملف
رقم ، إما 1 أو 0.

إذا كان الجزء الأول هو المعرف وقت التشغيل، يشير الاختبار إلى وقت تشغيل systemtap
الوضع. يرى ALTERNATE عادات أدناه لمزيد من المعلومات حول أوقات التشغيل. الجزء الثاني هو
أحد عاملي مقارنة السلسلة == or !=، والجزء الثالث عبارة عن سلسلة
حرفية لمطابقتها. هذه المقارنة عبارة عن تطابق حرف بدل (خاطئ).

خلاف ذلك ، من المتوقع أن يكون CONDITION عبارة عن مقارنة بين سلسلتين حرفية أو سلسلتين
حرفية رقمية. في هذه الحالة ، الوسيطات هي المتغيرات الوحيدة القابلة للاستخدام.

الرموز الصحيحة والخاطئة هي صفر أو رموز محلل أكثر عمومية (ربما
بما في ذلك شروط المعالج المسبق المتداخلة) ، ويتم تمريرها في دفق الإدخال إذا كان
الشرط صحيح أو خطأ. على سبيل المثال ، تؤدي التعليمة البرمجية التالية إلى حدوث خطأ في التحليل ما لم يكن
إصدار النواة الهدف أحدث من 2.6.5:

٪ (kernel_v <= "2.6.5"٪؟ ** ERROR **٪) # تسلسل رمز غير صالح

قد تتكيف الكود التالي مع انجراف إصدار kernel الافتراضي:

وظيفة نواة التحقيق (
٪ (kernel_v <= "2.6.12"٪؟ "__mm_do_fault"٪:
٪ (kernel_vr == "2.6.13 * smp"٪؟ "do_page_fault"٪:
غير مدعوم٪)٪)
) {/ * ... * /}

٪ (قوس == "ia64"٪؟
فحص syscall.vliw = kernel.function ("vliw_widget") {}
%)

المعالج ماكروس
يدعم المعالج المسبق أيضًا منشأة ماكرو بسيطة ، يتم تشغيلها كمرور منفصل من قبل
المعالجة المشروطة.

يتم تعريف وحدات الماكرو باستخدام البنية التالية:

define NAME٪ (BODY٪)
define NAME (PARAM_1، PARAM_2، ...)٪ (BODY٪)

يتم استدعاء وحدات الماكرو والمعلمات داخل نص ماكرو من خلال إضافة بادئة إلى اسم الماكرو
برمز @:

define foo٪ (x٪)
@ عرّف إضافة (أ ، ب)٪ (((@ أ) + (@ ب))٪)

foo =add (2,2،XNUMX)

يتم تنفيذ توسيع الماكرو حاليًا في مسار منفصل قبل التحويل البرمجي الشرطي.
لذلك ، سيتم توسيع كل من الرموز المميزة TRUE- و FALSE في التعبيرات الشرطية بشكل ماكرو
بغض النظر عن كيفية تقييم الحالة. قد يؤدي هذا أحيانًا إلى حدوث أخطاء:

// النتائج التالية في تعارض:
٪ (CONFIG_UTRACE == "y"٪؟
define foo٪ (process.syscall٪)
%:
define foo٪ (** ERROR **٪)
%)

// يعمل ما يلي بشكل صحيح كما هو متوقع:
define foo٪ (
٪ (CONFIG_UTRACE == "y"٪؟ process.syscall٪: ** خطأ **٪)
%)

المثال الأول غير صحيح لأنه يتم تقييم كلا التعريفين في تمريرة قبل
قيد التقييم الشرطي.

عادة ، يكون تعريف الماكرو محليًا للملف الذي يحدث فيه. وبالتالي ، يتم تحديد ماكرو فيه
مجموعة tapset لا تجعلها متاحة لمستخدم مجموعة tapset. متاح للجمهور
يمكن تعريف وحدات الماكرو الخاصة بالمكتبة من خلال تضمين ملفات .stpm في مسار بحث tapset. هؤلاء
قد تحتوي الملفات فقط على بنياتdefine ، والتي تصبح مرئية عبر جميع مجموعات tapsets و
البرامج النصية للمستخدم.

المتغيرات
معرفات المتغيرات والوظائف هي تسلسل أبجدي رقمي ، وقد تشمل _
و $ الشخصيات. قد لا تبدأ برقم عادي ، كما هو الحال في C. كل متغير هو بواسطة
المحلية الافتراضية للمسبار أو كتلة بيان الوظيفة التي يتم ذكرها ضمنها ، و
لذلك يقتصر نطاقها وعمرها على مسبار معين أو استدعاء وظيفة.

يتم كتابة المتغيرات العددية ضمنيًا كسلسلة أو عدد صحيح. المصفوفات النقابية
تحتوي أيضًا على قيمة سلسلة أو عدد صحيح ، ومجموعة من السلاسل النصية و / أو الأعداد الصحيحة تعمل كملف
مفتاح. فيما يلي بعض التعبيرات الأساسية.

فار1 = 5
var2 = "شريط"
array1 [pid ()] = "name" # مفتاح رقمي واحد
array2 ["foo"، 4، i ++] + = 5 # متجه لمفاتيح السلسلة / الأرقام / الأسطوانات
if (["hello"، 5,4،2] in arrayXNUMX) println ("yes") # اختبار العضوية

المترجم يؤدي نوع الإستنباط على كافة المعرفات ، بما في ذلك فهارس الصفيف و
معلمات الوظيفة. يشير الاستخدام غير المتسق للمعرفات المرتبط بالنوع إلى وجود خطأ.

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

شامل var1, var2, var3 = 4

يمكن أيضًا تعيين المتغيرات العامة كخيارات وحدة نمطية. يمكن للمرء القيام بذلك إما باستخدام -G
الخيار ، أو يجب أولاً تجميع الوحدة باستخدام stap -p4. يمكن أن تكون المتغيرات العالمية بعد ذلك
ضبط على سطر الأوامر عند استدعاء staprun على الوحدة التي تم إنشاؤها بواسطة stap -p4. يرى
ركبة(8) لمزيد من المعلومات.

يتم تحديد حجم المصفوفات بواسطة متغير MAXMAPENTRIES - راجع ملف قيادة آمنة لأي لبس الأمن
قسم للحصول على التفاصيل. اختياريًا ، قد يتم التصريح عن المصفوفات العامة بأقصى حجم بـ
الأقواس ، لتجاوز MAXMAPENTRIES لذلك الصفيف فقط. لاحظ أن هذا لا يشير
نوع مفاتيح المصفوفة ، الحجم فقط.

شامل مجموعة صغيرة [10], عادي, كبير_أري [50000]

قد يتم تكوين المصفوفات للالتفاف باستخدام اللاحقة '٪'. هذا يؤدي إلى العناصر القديمة
يمكن الكتابة فوقها إذا تم إدخال المزيد من العناصر أكثر مما يمكن أن تحتويه المصفوفة. هذا يعمل لكليهما
المصفوفات المكتوبة على شكل جمعيات وإحصاءات.

شامل ملفوفة_أري 1٪ [10], مغلف_أري 2٪

توفر العديد من أنواع نقاط التحقيق متغيرات السياق ، وهي قيم وقت التشغيل ، بأمان
المستخرجة من kernel أو برنامج مساحة المستخدمين قيد الفحص. هذه مسبوقة بامتداد
$ شخصية. قسم متغيرات السياق بتنسيق ستابروبس(3stap) يسرد ما هو متاح
لكل نوع من نقاط التحقيق. تصبح متغيرات السياق هذه سلسلة عادية أو رقمية
الحجميات بمجرد تخزينها في متغيرات النص العادي. انظر قسم الطباعة
أدناه حول كيفية إعادتها إلى مؤشرات مكتوبة لمزيد من المعالجة كسياق
المتغيرات.

البيانات
تمكن العبارات من تدفق التحكم الإجرائي. قد تحدث داخل الوظائف والتحقيق
معالجات. إجمالي عدد العبارات التي تم تنفيذها ردًا على أي حدث تحقيق فردي
يقتصر على بعض الأرقام المحددة بواسطة ماكرو في كود C المترجم ، وهو موجود في
حي 1000.

EXP نفِّذ تعبيرًا ذا قيمة سلسلة أو عددًا صحيحًا وتخلص من القيمة.

{ ستمت1 ستمت2 ... }
نفِّذ كل عبارة بالتسلسل في هذه الكتلة. لاحظ أن الفواصل أو
النهايات بشكل عام ليست ضرورية بين العبارات.

; بيان لاغٍ ، لا تفعل شيئًا. إنه مفيد كفاصل اختياري بين
عبارات لتحسين اكتشاف الأخطاء النحوية والتعامل مع قواعد معينة
الغموض.

if (إكسب) STMT1 [ آخر STMT2]
قارن EXP ذات القيمة الصحيحة بالصفر. قم بتنفيذ أول (غير صفري) أو STMT الثاني
(صفر).

في حين (إكسب) ستمت
بينما يتم تقييم EXP ذات القيمة الصحيحة إلى غير الصفر ، قم بتنفيذ STMT.

لـ (EXP1 ؛ EXP2 ؛ EXP3) STMT
قم بتنفيذ EXP1 كتهيئة. بينما EXP2 ليست صفرية ، قم بتنفيذ STMT ، ثم ملف
تعبير التكرار EXP3.

foreach (حكم الفيديو المساعد in مجموعة مصفوفة [ قصر EXP]) STMT
قم بعمل تكرار حلقي فوق كل عنصر من عناصر المصفوفة العالمية المسماة ، مع تخصيص المفتاح الحالي لـ VAR.
لا يجوز تعديل المصفوفة داخل العبارة. بإضافة ملف + or -
عامل التشغيل بعد معرف VAR أو ARRAY ، سيستمر التكرار في ملف
مرتبة حسب الفهرس أو القيمة تصاعديًا أو تنازليًا. إذا كانت المصفوفة تحتوي على
تجميع الإحصائيات ، مضيفا المطلوب @المشغل أو العامل بين معرف ARRAY
و مبادئ السلوك + or - ستحدد وظيفة تجميع الفرز. انظر الإحصاء
قسم أدناه لتلك المتاحة. الافتراضي هو @عدد. باستخدام الخيار قصر
تحدد الكلمة الأساسية عدد مرات تكرار الحلقة إلى مرات EXP. يتم تقييم EXP مرة واحدة
في بداية الحلقة.

foreach ([VAR1، VAR2، ...] in مجموعة مصفوفة [ قصر EXP]) STMT
كما هو مذكور أعلاه ، يُستخدم عند فهرسة المصفوفة بمجموعة من المفاتيح. فرز
يمكن استخدام اللاحقة على معرّف VAR أو ARRAY واحد على الأكثر.

foreach ([VAR1، VAR2، ...] in صفيف [INDEX1 ، INDEX2 ، ...] [ قصر EXP]) STMT
كما هو مذكور أعلاه ، حيث تقتصر التكرارات على عناصر في المصفوفة حيث المفاتيح
تطابق قيم الفهرس المحددة. يمكن استخدام الرمز * لتحديد فهرس و
سيتم التعامل معها على أنها حرف بدل.

foreach (القيمة = VAR in مجموعة مصفوفة [ قصر EXP]) STMT
هذا البديل من foreach يحفظ القيمة الحالية في VALUE في كل تكرار ، لذلك هو
نفس الصفيف [VAR]. يعمل هذا أيضًا مع مجموعة مفاتيح. فرز اللواحق على
VALUE لها نفس التأثير كما في ARRAY.

foreach (القيمة = VAR in صفيف [INDEX1 ، INDEX2 ، ...] [ قصر EXP]) STMT
كما هو مذكور أعلاه ، حيث تقتصر التكرارات على عناصر في المصفوفة حيث المفاتيح
تطابق قيم الفهرس المحددة. يمكن استخدام الرمز * لتحديد فهرس و
سيتم التعامل معها على أنها حرف بدل.

استراحة, استمر
اخرج من حلقة التعشيش الداخلية أو كررها (في حين or لـ or foreach) إفادة.

عائد أعلى EXP
إرجاع قيمة EXP من وظيفة التضمين. إذا لم يتم أخذ قيمة الوظيفة
في أي مكان ، فلن تكون هناك حاجة إلى بيان الإرجاع ، وستحتوي الوظيفة على
نوع خاص "غير معروف" بدون قيمة مرتجعة.

التالي العودة الآن من إرفاق معالج التحقيق. هذا مفيد بشكل خاص في المسبار
الأسماء المستعارة التي تطبق مسندات تصفية الأحداث.

محاولة {STMT1} قبض {STMT2}
قم بتشغيل العبارات في الكتلة الأولى. عند حدوث أي أخطاء في وقت التشغيل ، قم بإلغاء STMT1 و
بدء تنفيذ STMT2. ستنتشر أي أخطاء في STMT2 إلى المحاولة / الالتقاط الخارجي
الكتل ، إن وجدت.

محاولة {STMT1} قبض(حكم الفيديو المساعد) {STMT2}
كما هو مذكور أعلاه ، بالإضافة إلى تعيين رسالة الخطأ إلى سلسلة VAR المتغير القياسي.

حذف صفيف [INDEX1 ، INDEX2 ، ...]
قم بإزالة العنصر المحدد بواسطة مجموعة الفهرس من ARRAY. إذا كان الفهرس tuple
يحتوي على * بدلاً من فهرس ، يتم التعامل مع * كحرف بدل وجميع العناصر
بمفاتيح تتطابق مع مجموعة الفهرس ، ستتم إزالتها من ARRAY. لن تكون القيمة
يعد متاحًا ، ولن تقوم التكرارات اللاحقة بالإبلاغ عن العنصر. إنها
ليس خطأ في حذف عنصر غير موجود.

حذف مجموعة مصفوفة
قم بإزالة كافة العناصر من ARRAY.

حذف العددية
يزيل قيمة SCALAR. يتم مسح الأعداد الصحيحة والسلاسل إلى 0 و ""
على التوالي ، بينما يتم إعادة تعيين الإحصائيات إلى الحالة الفارغة الأولية.

التعبيرات
يدعم Systemtap عددًا من عوامل التشغيل التي لها نفس البنية العامة والدلالات و
الأسبقية كما في C و awk. يتم إجراء الحساب وفقًا لقواعد C النموذجية للتوقيع
أعداد صحيحة. تم الكشف عن القسمة على الصفر أو تجاوز السعة وينتج عنها خطأ.

عوامل رقمية ثنائية
* / % + - >> << & ^ | && ||

عوامل تشغيل السلاسل الثنائية
. (سلسلة السلسلة)

عوامل الإسناد الرقمية
= *= /= %= += -= >> = << = &= ^= |=

عوامل تعيين السلسلة
= .=

عوامل رقمية أحادية
+ - ! ~ ++ --

الأرقام الثنائية أو مقارنة السلاسل أو عوامل مطابقة التعبير العادي
< > <= >= == != =~ !~

عامل ثلاثي
كوند ? exp1 : exp2

عامل التجميع
( إكسب )

وظيفة الدعوة
fn ([arg1، arg2، ...])

فحص عضوية المجموعة
إكسب in مجموعة
[exp1, exp2, ] in مجموعة
[*, *, ]in مجموعة

منتظم التعبير مطابقة
تدعم لغة البرمجة النصية مطابقة التعبير العادي. الصيغة الأساسية هي
يتبع:

إكسب =~ رجإكس
إكسب !~ رجإكس

(يجب أن يكون المعامل الأول تعبيرًا يتم تقييمه إلى سلسلة ؛ يجب أن يكون المعامل الثاني
أن تكون سلسلة حرفية تحتوي على تعبير عادي صالح نحويًا.)

تدعم صيغة التعبير العادي معظم ميزات POSIX Extended Regular
التعبيرات ، باستثناء وظائف إعادة استخدام التعبيرات الفرعية ("\ 1"). القدرة على الالتقاط
واستخراج محتويات السلسلة المتطابقة والتعبيرات الفرعية لم يتم بعد
نفذت.

المجسات
يحدد البناء الرئيسي في لغة البرمجة المجسات. مجسات معاون الملخص
الأحداث مع كتلة البيان ("معالج التحقيق") التي سيتم تنفيذها عند أي من هؤلاء
الأحداث تحدث. الصيغة العامة هي كما يلي:

مسبار بروبيبوينت [, بروبيبوينت] { [STMT ...] }
مسبار بروبيبوينت [, بروبيبوينت] if (CONDITION) { [STMT ...] }

يتم تحديد الأحداث في صيغة خاصة تسمى "نقاط التحقيق". هناك العديد
أنواع مختلفة من نقاط الاستقصاء التي يحددها المترجم ، وقد تحدد البرامج النصية للتابسيت بشكل أكبر
منها باستخدام الأسماء المستعارة. قد تكون نقاط التحقيق متقطعة أو مجمعة أو مدرجة في التفضيل
متواليات ، أو معلنة اختيارية. مزيد من التفاصيل حول بناء جملة نقطة التحقيق ودلالاتها
المدرجة على ستابروبس(3stap) صفحة دليل.

يتم تفسير معالج التحقيق بالنسبة إلى سياق كل حدث. للأحداث
المرتبطة برمز kernel ، قد يشمل هذا السياق المتغيرات المحدد في مصدر الكود
في تلك البقعة. يتم تقديم "متغيرات السياق" إلى البرنامج النصي كمتغيرات التي
الأسماء مسبوقة بـ "$". يمكن الوصول إليها فقط إذا تم حفظ مترجم kernel
لهم على الرغم من التحسين. هذا هو نفس القيد الذي يواجهه مستخدم مصحح الأخطاء عندما
العمل مع كود محسن. بالإضافة إلى ذلك ، يجب أن تكون الكائنات موجودة في الذاكرة المقسمة إلى صفحات في
لحظة تنفيذ معالج فحص systemtap ، لأنه يجب ألا يتسبب مخطط النظام
(يمنع) أي ترحيل إضافي. تحتوي بعض أنواع المجسات على سياق قليل جدًا. انظر
ستابروبس(3stap) صفحات الدليل لمعرفة أنواع متغيرات السياق المتاحة في كل نوع
من نقطة التحقيق.

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

يمكن تحديد نقاط فحص جديدة باستخدام "الأسماء المستعارة". تبدو الأسماء المستعارة لنقطة التحقيق مشابهة لـ
تعريفات المسبار ، ولكن بدلاً من تنشيط مسبار عند نقطة معينة ، فإنه يحدد فقط a
اسم نقطة مسبار جديد كاسم مستعار لاسم موجود. هناك نوعان من الاسم المستعار ، أي
أسلوب المقدمة وأسلوب الخاتمة التي تم تحديدها بواسطة "=" و "+ ="
على التوالي.

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

فحص syscall.read = kernel.function ("sys_read") {
الفلدس = $ fd
إذا (execname () == "init") التالي # تخطي بقية التحقيق
}

يحدد نقطة تحقيق جديدة قراءة النظام، والتي تتوسع إلى وظيفة kernel ("sys_read")، مع
البيان المعطى كمقدمة ، وهو مفيد في التحديد المسبق لبعض المتغيرات لـ
مستخدم الاسم المستعار و / أو لتخطي معالجة المسبار بالكامل بناءً على بعض الشروط. و

فحص syscall.read + = kernel.function ("sys_read") {
إذا (tracethis) println ($ fd)
}

يعرّف نقطة مسبار جديدة مع العبارة المعطاة على أنها خاتمة ، وهو أمر مفيد
الإجراءات التي تستند إلى المتغيرات التي تم تعيينها أو تركها المستخدم المستعار. يرجى ملاحظة أنه في
في كل حالة ، يتم التعامل مع العبارات الموجودة في كتلة معالج الاسم المستعار بشكل عادي ، لذلك
المتغيرات المعينة هناك تشكل مجرد تهيئة ، وليس استبدال ماكرو.

يتم استخدام الاسم المستعار تمامًا مثل نوع المسبار المدمج.

فحص syscall.read {
printf ("قراءة fd =٪ d \ n" ، ملفات)
إذا (fildes> 10) تتبع هذا = 1
}

وظائف
قد تحدد البرامج النصية Systemtap الإجراءات الفرعية لاستخراج العمل المشترك. وظائف تأخذ أي
عدد الوسيطات العددية (عدد صحيح أو سلسلة) ، ويجب أن يُرجع عددًا فرديًا (عددًا صحيحًا
أو سلسلة). مثال على إعلان الوظيفة يبدو كالتالي:

دالة thisfn (arg1، arg2) {
إرجاع arg1 + arg2
}

لاحظ الغياب العام لإعلانات النوع ، والتي يتم استنتاجها بدلاً من ذلك بواسطة
مترجم. ومع ذلك ، إذا رغبت في ذلك ، قد يتضمن تعريف الوظيفة نوعًا صريحًا
إعلانات عن قيمة الإرجاع و / أو الحجج الخاصة بها. هذا مفيد بشكل خاص ل
وظائف- C المضمنة. في المثال التالي ، محرك استدلال النوع يحتاج فقط إلى الاستنتاج
نوع نوع arg2 (سلسلة).

دالة thatfn: سلسلة (arg1: long، arg2) {
سباق العودة (arg1). arg2
}

قد تقوم الوظائف باستدعاء الآخرين أو أنفسهم بشكل متكرر ، حتى حد تداخل ثابت. هذا
يتم تحديد الحد بواسطة ماكرو في كود C المترجم ويقع بالقرب من 10.

طباعة
هناك مجموعة من أسماء الوظائف التي يعالجها المترجم بشكل خاص. هم
قيم التنسيق للطباعة إلى تدفق إخراج systemtap القياسي بطريقة أكثر ملاءمة
طريق. ال العدو * المتغيرات ترجع السلسلة المنسقة بدلاً من طباعتها.

طباعة, عدو سريع
اطبع قيمة واحدة أو أكثر من أي نوع ، متسلسلة معًا مباشرةً.

println, سبرينتلن
قم بطباعة القيم مثل طباعة و عدو سريع، ولكن يمكنك أيضًا إلحاق سطر جديد.

برينتد, سبرينتد
خذ محدد سلسلة وقيمتين أو أكثر من أي نوع ، واطبع القيم
مع المحدد الذي تم إدخاله. يجب أن يكون المحدد عبارة عن ثابت سلسلة حرفية.

printdln, سبرينتدلن
قم بطباعة القيم باستخدام محدد مثل برينتد و سبرينتد، ولكن يمكنك أيضًا إلحاق سطر جديد.

printf, sprintf
خذ سلسلة تنسيق وعدد من القيم من الأنواع المقابلة ، واطبع
كل منهم. يجب أن يكون التنسيق عبارة عن ثابت سلسلة حرفية.

إنّ كافة أنواع عهود الـ printf توجيهات التنسيق المشابهة لتلك الخاصة بـ C ، باستثناء أنها من النوع الكامل-
فحص من قبل المترجم:

يكتب٪ b ثنائي ثنائي للقيمة المعطاة ، بدلاً من نص ASCII. العرض
يحدد المحدد عدد البايتات المراد كتابتها ؛ المحددات الصالحة هي٪ b
٪ 1b٪ 2b٪ 4b٪ 8b. الافتراضي (٪ b) هو 8 بايت.

٪ c حرف.

٪ d ،٪ i علامة عشرية.

يقوم٪ m بقراءة ذاكرة kernel بأمان عند العنوان المحدد ، وإخراج محتواها. ال
محدد الدقة الاختياري (وليس عرض الحقل) يحدد عدد
بايت للقراءة - الافتراضي هو 1 بايت. ٪ 10.4m يطبع 4 بايت من الذاكرة في ملف
مجال بعرض 10 أحرف.

٪ M مثل٪ m ، لكن المخرجات بالنظام الست عشري. الحجم الأدنى للإخراج هو
ضعف محدد الدقة الاختياري - الافتراضي هو 1 بايت (حرفان سداسيتان).
٪ 10.4M يطبع 4 بايت من الذاكرة على هيئة 8 أحرف سداسية عشرية في ملف
مجال بعرض 10 أحرف.

٪ o ثماني غير موقعة.

٪ p عنوان مؤشر غير موقع.

سلسلة٪ s.

٪ u عدد عشري غير موقع.

٪ x قيمة سداسية عشرية غير موقعة ، في جميع الأحرف الصغيرة.

٪ X قيمة سداسية عشرية غير موقعة ، في جميع الأحرف الكبيرة.

٪٪ يكتب٪.

إنّ كافة أنواع عهود الـ # علم يحدد الأشكال البديلة. للثماني ، هذه البادئات 0. بالنسبة للعرافة ، هذا
البادئات 0x أو 0X ، حسب الحالة. بالنسبة للأحرف ، فإن هذا يهرب من القيم غير المطبوعة
مع هروب مثل C أو ثماني خام.

أمثلة:

a = "alice"، b = "bob"، p = 0x1234abcd، i = 123، j = -1، id [a] = 1234، id [b] = 4567
طباعة ("مرحبًا")
المطبوعات: مرحبًا
println (ب)
المطبوعات: بوب \ n
println (a. "is". عدو سريع(16))
المطبوعات: أليس 16
foreach (الاسم في المعرّف) printdln ("|" ، strlen (الاسم) ، الاسم ، المعرّف [الاسم])
المطبوعات: 5 | أليس | 1234 \ n3 | بوب | 4567
printf ("٪ c هي٪ s ؛٪ x أو٪ X أو٪ p ؛٪ d أو٪ u \ n" ، 97 ، a ، p ، p ، p ، j ، j)
المطبوعات: أليس ؛ 1234abcd أو 1234ABCD أو 0x1234abcd ؛ -1 أو 18446744073709551615 \ n
printf ("2 بايت من مخزن kernel المؤقت في العنوان٪ p:٪ 2m" ، p ، p)
المطبوعات: 2 بايت من المخزن المؤقت kernel على العنوان 0x1234abcd:
printf ("٪ 4b"، p)
يطبع (هذه القيم كبيانات ثنائية): 0x1234abcd
printf ("٪ # o٪ # x٪ # X \ n"، 1، 2، 3)
المطبوعات: 01 0x2 0X3
printf ("٪ # c٪ # c٪ # c \ n"، 0، 9، 42)
المطبوعات: \ 000 \ t *

إحصائيات
غالبًا ما يكون من المرغوب فيه جمع الإحصائيات بطريقة تتجنب عقوبات
مرارًا وتكرارًا قفل المتغيرات العالمية التي يتم وضع هذه الأرقام فيها.
يوفر Systemtap حلاً باستخدام عامل خاص لتجميع القيم ، والعديد منها
الدوال الزائفة لاستخراج المجاميع الإحصائية.

عامل التجميع هو <<، ويشبه الواجب ، أو تدفق الإخراج C ++
عملية. يحدد المعامل الأيسر قيمة قياسية أو قيمة مصفوفة يجب أن تكون
أعلن العالمية. المعامل الأيمن هو تعبير رقمي. المعنى بديهي:
أضف الرقم المحدد إلى كومة الأرقام لحساب إحصائيات. (القائمة المحددة
من الإحصائيات التي يتم جمعها بشكل منفصل ، من خلال وظائف الاستخراج.)

فو <<< 1
احصائيات [pid ()] <<< memsize

وظائف الاستخراج خاصة أيضًا. لكل مظهر استخراج متميز
وظيفة تعمل على معرف معين ، يقوم المترجم بترتيب حساب مجموعة من
الإحصاءات التي ترضيها. وبالتالي فإن نظام الإحصاء "حسب الطلب". كل إعدام
من وظيفة الاستخراج تؤدي إلى حساب التجميع لتلك اللحظة عبر الكل
معالجات.

ها هي مجموعة وظائف المستخرج. الحجة الأولى لكل منها هي نفس أسلوب
lvalue المستخدمة على الجانب الأيسر من عملية التراكم. ال count (ت), sum (v),
min (v), @ max (v), avg (v) تقوم وظائف المستخرج بحساب ملف
العدد / الإجمالي / الحد الأدنى / الحد الأقصى / المتوسط ​​لجميع القيم المتراكمة. القيم الناتجة هي
كل الأعداد الصحيحة البسيطة. يمكن فرز المصفوفات التي تحتوي على مجاميع وتكرارها. انظر
foreach بناء أعلاه.

الرسوم البيانية متاحة أيضًا ، ولكنها أكثر تعقيدًا لأنها تحتوي على متجه بدلاً من ذلك
من القيمة العددية. hist_linear (v ، بدء ، توقف ، فاصل زمني) يمثل مدرج تكراري خطي من
"بدء" إلى "إيقاف" بزيادات "الفاصل الزمني". يجب أن يكون الفاصل الزمني موجبًا. بصورة مماثلة،
hist_log (ت) يمثل مدرج تكراري لوغاريتمي للقاعدة 2. طباعة الرسم البياني مع
طباعة تعرض مجموعة الوظائف كائن مدرج تكراري كمخطط شريطي جدولي "ASCII art".

التحقيق الموقت. الملف الشخصي {
x [1] <<< pid ()
x [2] <<< uid ()
ص <<< tid ()
}
x العالمية // مصفوفة تحتوي على مجاميع
ذ العالمية // عددي
نهاية التحقيق {
foreach ([i] in x @ count +) {
printf ("x [٪ d]: متوسط٪ d = مجموع٪ d / عدد٪ d \ n"،
i ،avg (x [i]) ،sum (x [i]) ،count (x [i]))
println (hist_log (x [i]))
}
println ("y:")
println (hist_log (y))
}

الطباعة
مرة واحدة في المؤشر (راجع قسم متغيرات السياق من ستابروبس(3stap)) تم حفظه
في متغير عدد صحيح للنص ، يفقد المترجم معلومات النوع الضرورية لـ
الوصول إلى الأعضاء من هذا المؤشر. باستخدام @يقذف() المشغل يخبر المترجم كيف
تفسير الرقم على أنه مؤشر مكتوب.

cast (p، "type_name" [، "module"]) -> عضو

هذا سوف يفسر p كمؤشر لبنية / اتحاد مسمى أكتب اسم و dereference ال
عضو قيمة. إضافي -> الحقل الفرعي قد يتم إلحاق التعبيرات لإحالة المزيد من المستويات.
ملاحظة: نفس عامل الإشارة المرجعية -> يستخدم للإشارة إلى كل من الاحتواء المباشر أو
مؤشر المراوغة. يحدد Systemtap تلقائيًا ملفات. الاختيارية وحدة يروي
المترجم أين تبحث عن معلومات حول هذا النوع. قد تكون وحدات متعددة
المحدد كقائمة مع : فواصل. إذا لم يتم تحديد الوحدة النمطية ، فستتحول إلى الوضع الافتراضي
إما إلى وحدة التحقيق الخاصة بالمسبار القزم ، أو إلى "النواة" للوظائف وكل الأشياء الأخرى
أنواع المجسات.

يمكن للمترجم إنشاء الوحدة النمطية الخاصة به مع نوع المعلومات من رأس محاط
أقواس زاوية ، في حالة عدم توفر معلومات التصحيح العادية. بالنسبة إلى رؤوس kernel ، قم بوضع بادئة عليها
مع "kernel" لاستخدام نظام البناء المناسب. يتم إنشاء جميع الرؤوس الأخرى باستخدام
معلمات GCC الافتراضية في وحدة مستخدم. يمكن تحديد رؤوس متعددة بالتسلسل
لحل الاعتمادية.

cast (تلفزيون، "timeval"، " ") -> tv_sec
cast (مهمة ، "task_struct" ، "kernel ") -> tgid
cast (مهمة ، "task_struct" ،
"النواة ") -> fs-> umask

القيم المكتسبة @يقذف قد تتم طباعته بشكل جميل بواسطة ملف $ و $$ عاملي اللاحقة ، نفس الشيء
بالطريقة الموضحة في قسم متغيرات السياق من ستابروبس(3stap) صفحة دليل.

عندما تكون في وضع المعلم ، سيسمح المترجم أيضًا للنصوص بتعيين قيم جديدة للأعضاء
من المؤشرات المطبعية.

إن Typecasting مفيد أيضًا في حالة فارغ* الأعضاء الذين يمكن تحديد نوعها عند
مدة العرض.

مسبار فو {
إذا (var-> type == 1) {
value =cast ($ var-> data، "type1") -> bar
{} آخر
value =cast ($ var-> data، "type2") -> baz
}
طباعة (قيمة)
}

EMBEDDED C
عندما تكون في وضع المعلم ، يقبل المترجم التعليمات البرمجية المضمنة في المستوى الأعلى من البرنامج النصي.
يتم إرفاق هذا الرمز بين %{ و %} علامات ، ويتم نسخها حرفيا ، بدون
التحليل ، في بعض التسلسل ، إلى المستوى الأعلى من كود C الذي تم إنشاؤه. في الأبعد
مستوى ، قد يكون من المفيد إضافة تتضمن # التعليمات وأي تعريفات إضافية لـ
تستخدم من قبل رمز مضمن آخر.

مكان آخر حيث يُسمح بالتعليمة المضمنة هو كجسم وظيفي. في هذه الحالة ، فإن ملف
يتم استبدال نص لغة النص بالكامل بقطعة من كود C محاطًا مرة أخرى بين %{
و %} علامات. قد يفعل رمز C هذا أي شيء معقول وآمن. هناك عدد من
قيود سلامة غير موثقة ولكنها معقدة على الذرية والتزامن والموارد
الاستهلاك ، ووقت التشغيل ، لذا فهذه تقنية متقدمة.

يتم توفير مواقع الذاكرة المخصصة لقيم الإدخال والإخراج لها باستخدام
وحدات الماكرو STAP_ARG_ * و STAP_RETVALUE. يمكن الإشارة إلى الأخطاء باستخدام STAP_ERROR. قد الإخراج
أن تكتب باستخدام STAP_PRINTF. قد تعود الوظيفة في وقت مبكر مع STAP_RETURN. هنا
بعض الأمثلة:

عدد صحيح_وظيفة (val)٪ {
STAP_PRINTF ("٪ d \ n"، STAP_ARG_val) ؛
STAP_RETVALUE = STAP_ARG_val + 1 ،
إذا (STAP_RETVALUE == 4)
STAP_ERROR ("تخمين خاطئ:٪ d"، (int) STAP_RETVALUE) ،
إذا (STAP_RETVALUE == 3)
STAP_RETURN(0)
STAP_RETVALUE ++ ،
%}
دالة string_ops (val)٪ {
strlcpy (STAP_RETVALUE، STAP_ARG_val، MAXSTRINGLEN) ،
strlcat (STAP_RETVALUE ، "واحد" ، MAXSTRINGLEN) ،
إذا (strcmp (STAP_RETVALUE، "ثلاثة-اثنان-واحد"))
STAP_RETURN ("يجب أن تكون المعلمة ثلاثة - اثنان -") ؛
%}
وظيفة no_ops ()٪ {
STAP_RETURN () ، / * تم استنتاج الوظيفة بدون قيمة إرجاع * /
%}

يجب أن يستنتج المترجم وسيطة الدالة وأنواع قيمة الإرجاع من
مواقع الاتصال من أجل أن يعمل هذا. يجب على المستخدم فحص رمز C الذي تم إنشاؤه لـ
وظائف لغة النص العادية من أجل كتابة وظائف C المدمجة المتوافقة.

المكان الأخير الذي يُسمح فيه بالتعليمات البرمجية المضمنة هو تعبير rvalue. في هذه الحالة،
رمز C المرفق بين %{ و %} يتم تفسير العلامات على أنها تعبير عادي
قيمة. يُفترض أن يكون رقمًا عاديًا مُوقَّعًا 64 بت ، ما لم يكن العلامة /* سلسلة */
يتم تضمينها ، وفي هذه الحالة يتم التعامل معها كسلسلة.

الوظيفة add_one (val) {
قيمة العائد +٪ {1٪}
}
الوظيفة add_string_two (val) {
عودة فال. ٪ {/ * سلسلة * / "اثنان"٪}
}

قد يحتوي كود- C المضمن على علامات لتأكيد خصائص التحسين والسلامة.

/* نقي */
يعني أن رمز C ليس له آثار جانبية ويمكن استبعاده تمامًا إذا كانت قيمته
لا يستخدم من قبل رمز البرنامج النصي.

/* مستقر */
يعني أن رمز C له دائمًا نفس القيمة (في أي معالج مسبار معين
استدعاء) ، لذلك قد يتم استبدال المكالمات المتكررة تلقائيًا بقيم الذاكرة.
يجب ألا تأخذ هذه الوظائف أي معلمات ، كما يجب أن تكون كذلك نقي.

/* غير مميز */
يعني أن رمز C آمن جدًا لدرجة أنه يُسمح حتى للمستخدمين غير المتميزين باستخدامه
هنا.

/* امتياز myproc */
يعني أن رمز C آمن جدًا لدرجة أنه يُسمح حتى للمستخدمين غير المتميزين باستخدامه
، بشرط أن يكون هدف المجس الحالي ضمن عملية المستخدم الخاصة.

/* المعلم */
يعني أن كود C غير آمن لدرجة أنه يجب على مستخدم مخطط النظام تحديده -g (المعلم
mode) لاستخدام هذا.

/* غير مشوهة */
في دالة C المضمنة ، يعني أن بناء جملة الوصول إلى الوسيطة القديم (ما قبل 1.8)
يجب أن تكون متاحة داخل الوظيفة. ومن ثم ، بالإضافة إلى STAP_ARG_foo
و STAP_RETVALUE يمكن للمرء استخدامها هذا-> فو و هذا->__إعادة القيمة على التوالي في الداخل
الوظيفة. هذا مفيد لترحيل التعليمات البرمجية المكتوبة لـ SystemTap بسرعة
الإصدار 1.7 وما قبله.

/* غير معدل */
في دالة C المضمنة ، يعني أن وسيطات الدالة لم يتم تعديلها
داخل جسم الوظيفة.

/* سلسلة */
في تعبيرات C المضمنة فقط ، يعني أن التعبير يحتوي على CONST دبابة * اكتب و
يجب معاملتها كقيمة سلسلة ، بدلاً من الرقمية الطويلة الافتراضية.

بنيت في
يتم توفير مجموعة من الأسماء المستعارة لنقاط التحقيق المضمنة بواسطة البرامج النصية المثبتة في ملف
الدليل المحدد في ملف com.stapaths(7) صفحة دليل. تم وصف الوظائف في
ستابروبس(3stap) صفحة دليل.

معالجة


يبدأ المترجم بالمرور 1 بتحليل نص الإدخال المحدد ، وجميع النصوص (الملفات
عين * .stp) وجدت في دليل tapset. الدلائل المدرجة مع -I تتم معالجتها في
تسلسل ، كل معالج في "وضع المعلم". لكل دليل عدد من الدلائل الفرعية
يتم البحث عنها أيضًا. يتم اشتقاق هذه الدلائل الفرعية من إصدار kernel المحدد (ملف
-R الخيار) ، للسماح لمزيد من البرامج النصية الخاصة بإصدار kernel لتجاوز أقل
منها محددة. على سبيل المثال ، لإصدار kernel 2.6.12-23.FC3 الأنماط التالية
سيتم البحث بالتسلسل: 2.6.12-23.FC3 / *. stp, 2.6.12 / *. stp, 2.6 / *. stp، وأخيرا
* .stp. يؤدي إيقاف المترجم بعد المرور 1 إلى طباعة أشجار التحليل.

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

بعد ذلك ، يتم التحقق من صحة جميع أوصاف نقاط التحقيق مقابل مجموعة متنوعة مدعومة من
مترجم. نقاط التحقيق التي تشير إلى مواقع الشفرة ("نقاط التحقيق المتزامنة")
تتطلب تثبيت معلومات تصحيح أخطاء kernel المناسبة. في المرتبطة
معالجات التحقيق ، تم العثور على متغيرات الجانب المستهدف (التي تبدأ أسماؤها بـ "$") ولديها
تم فك تشفير مواقع وقت التشغيل الخاصة بهم.

بعد ذلك ، يتم تحليل جميع التحقيقات والوظائف من أجل فرص التحسين ، من أجل
إزالة المتغيرات والتعبيرات والوظائف التي ليس لها قيمة مفيدة وليس لها آثار جانبية.
يُفترض أن وظائف Embedded-C لها آثار جانبية ما لم تتضمن السلسلة السحرية
/* نقي */. نظرًا لأن هذا التحسين يمكن أن يخفي أخطاء التعليمات البرمجية الكامنة مثل عدم تطابق النوع
أو متغيرات سياق $ غير صالحة ، فقد يكون من المفيد أحيانًا تعطيل التحسينات
مع الالجائزة -u الخيار.

أخيرًا ، يتم الاستدلال على جميع أنواع المتغيرات والوظائف والمعلمات والمصفوفة والفهرس من
السياق (العناصر الحرفية والمعاملات). يؤدي إيقاف المترجم بعد اجتياز 2 إلى سرده
جميع المجسات والوظائف والمتغيرات ، جنبًا إلى جنب مع جميع الأنواع المستنتجة. أي غير متسق
أو الأنواع التي لم يتم حلها تتسبب في حدوث خطأ.

في التمرير 3 ، يكتب المترجم رمز C الذي يمثل إجراءات جميع البرامج النصية المحددة
الملفات ، ويقوم بإنشاء ملف ماكيفيلي لبناء ذلك في كائن النواة. يتم وضع هذه الملفات
في دليل مؤقت. يؤدي إيقاف المترجم في هذه المرحلة إلى طباعة ملف
محتويات ملف C.

في التمرير 4 ، يستدعي المترجم نظام Linux kernel لإنشاء ملف
ملف كائن kernel. هذا ينطوي على الجري جعل في الدليل المؤقت ، ويتطلب أ
يتم تثبيت نظام بناء وحدة kernel (الرؤوس والتكوين والملفات Makefiles) في المعتاد
بقعة / ليب / وحدات / نسخة / بناء. إن إيقاف المترجم بعد اجتياز 4 هو الفرصة الأخيرة
قبل تشغيل كائن النواة. قد يكون هذا مفيدًا إذا كنت تريد أرشفة الملف.

في التمرير 5 ، يستدعي المترجم البرنامج المساعد systemtap ركبة برنامج
كائن نواة معين. يرتب هذا البرنامج لتحميل الوحدة ثم يتواصل معها ،
نسخ بيانات التتبع من النواة إلى ملفات مؤقتة ، حتى يرسل المستخدم مقاطعة
الإشارة. أي خطأ في وقت التشغيل واجهته معالجات التحقيق ، مثل نفاد
الذاكرة ، القسمة على الصفر ، تجاوز حدود التداخل أو وقت التشغيل ، ينتج عنها خطأ بسيط
إشارة. أخطاء بسيطة تزيد عن كتلة MAXERRORS لجميع التحقيقات اللاحقة (باستثناء
تحقيقات معالجة الأخطاء) ، وإنهاء الجلسة. أخيراً، ركبة يفرغ الوحدة ،
وينظف.

غير طبيعي الإنهاء
يجب على المرء تجنب قتل عملية الركاب بالقوة ، على سبيل المثال مع SIGKILL ، لأن
قد يتم ترك عملية stapio (عملية فرعية لعملية stap) والوحدة المحملة
يعمل على النظام. إذا حدث هذا ، أرسل SIGTERM أو SIGINT إلى أي stapio متبقي
العمليات ، ثم استخدم rmmod لتفريغ وحدة systemtap.

أمثلة


شاهد stapex(3stap) صفحة دليل لمجموعة مختصرة من العينات ، أو مجموعة كبيرة من
عينات مثبتة ضمن أدلة التوثيق / مواقع الاختبارات. يرى
com.stapaths(7stap) للموقع المحتمل لهذه على النظام.

التخزين المؤقت


يقوم مترجم systemtap بتخزين إخراج pass 3 (رمز C الذي تم إنشاؤه) والممر 4
الإخراج (وحدة النواة المترجمة) إذا تم اجتياز 4 بنجاح. هذا الإخراج المخزن مؤقتًا
يتم إعادة استخدامها إذا تمت ترجمة نفس النص مرة أخرى بافتراض وجود نفس الشروط (نفس
إصدار kernel ، ونفس إصدار systemtap ، وما إلى ذلك). يتم تخزين الملفات المخزنة مؤقتًا في ملف
$ SYSTEMTAP_DIR / ذاكرة التخزين المؤقت الدليل. يمكن تقييد ذاكرة التخزين المؤقت عن طريق امتلاك الملف Cache_mb_limit
وضعها في دليل ذاكرة التخزين المؤقت (الموضح أعلاه) الذي يحتوي فقط على عدد صحيح ASCII يمثل
كم من MiB لا ينبغي أن تتجاوز ذاكرة التخزين المؤقت. في حالة عدم وجود هذا الملف ، سيكون الافتراضي
تم إنشاؤه بحد أقصى 256 ميغا بايت. هذا حد "ضعيف" من حيث أن ذاكرة التخزين المؤقت ستكون
تنظيفها بعد إضافة إدخال جديد إذا تم تجاوز الفاصل الزمني لتنظيف ذاكرة التخزين المؤقت ، وبالتالي فإن الإجمالي
قد يتجاوز حجم ذاكرة التخزين المؤقت هذا الحد مؤقتًا. يمكن تحديد هذا الفاصل الزمني من خلال الحصول على
ملف Cache_clean_interval_s تم وضعها في دليل ذاكرة التخزين المؤقت (الموضح أعلاه) الذي يحتوي على ملف
عدد صحيح ASCII يمثل الفاصل الزمني بالثواني. في حالة عدم وجود هذا الملف الافتراضي
سيتم إنشاؤه مع ضبط الفاصل الزمني على 300 ثانية.

قيادة آمنة لأي لبس الأمن


يمكن استخدام Systemtap كأداة إدارية قوية. يمكن أن يفضح النواة الداخلية
هياكل البيانات ومعلومات المستخدم الخاصة المحتملة. (في داينست وضع وقت التشغيل ، هذا
ليس هو الحال ، راجع ALTERNATE عادات القسم أدناه.)

يؤكد المترجم العديد من قيود السلامة أثناء التجميع والمزيد أثناء التشغيل-
وقت. يهدف إلى ضمان عدم تشغيل روتين معالج لفترة طويلة جدًا ، وتخصيص لا حدود له
الذاكرة ، أو إجراء عمليات غير آمنة ، أو التداخل مع النظام عن غير قصد. الاستخدامات
من المتغيرات العامة للنصوص يتم تلقائيًا قراءة / كتابة مقفلة حسب الاقتضاء ، للحماية
ضد التلاعب من قبل معالجات التحقيق المتزامنة. (تم الكشف عن حالات التوقف التام عن العمل مع انتهاء المهلات.
استخدم -t علم لتلقي تقارير عن التنازع المفرط للقفل.)
وبالتالي فإن البرامج النصية بشكل عام خزنة. وضع المعلم -g الخيار يسمح للمسؤولين
تجاوز معظم تدابير السلامة ، والتي تسمح بإجراء عمليات جراحية أو تغيير الحالة ،
مدمج C ، ويزيد من خطر الانزعاج. بشكل افتراضي ، منع الحمل الزائد هو
تشغيل لجميع الوحدات. إذا كنت ترغب في تعطيل معالجة التحميل الزائد ، فاستخدم ملف
- حدود وقت الدعم الخيار.

عادةً ما تؤدي الأخطاء التي يتم اكتشافها في وقت التشغيل إلى إيقاف تشغيل البرنامج النصي النظيف وتمرير 5
رسالة خطأ. ال - أخطاء معالج الدعم يتيح الخيار للبرامج النصية تحمل الأخطاء البرمجية
دون اغلاق.

PERMISSIONS
بالنسبة لوقت تشغيل وحدة linux-kernel العادي ، لتشغيل بنية كائنات kernel systemtap ،
يجب أن يكون المستخدم واحدًا مما يلي:

· مستخدم الجذر.

· عضو في ستابديف و ستابوسر مجموعات؛

· عضو في ستابسيس و ستابوسر مجموعات؛ أو

· عضو في ستابوسر المجموعة.

المستخدم الجذر أو المستخدم الذي هو عضو في كل من ستابديف و ستابوسر يمكن للمجموعات البناء
وتشغيل أي برنامج نصي systemtap.

مستخدم عضو في كل من ستابسيس و ستابوسر يمكن للمجموعات فقط استخدام ما تم إنشاؤه مسبقًا
وحدات في ظل الشروط التالية:

· تم التوقيع على الوحدة من قبل موقّع موثوق به. عادةً ما يكون الموقعون الموثوق بهم علامة نظام
تجميع الخوادم التي توقع الوحدات عندما يكون --امتياز يتم تحديد الخيار بواسطة
عميل. انظر خادم الركاب(8) صفحة دليل لمزيد من المعلومات.

· تم بناء الوحدة باستخدام امتداد - الامتياز = stapsys أو ال - الامتياز = stapusr خيارات.

أعضاء فقط ستابوسر يمكن للمجموعة فقط استخدام الوحدات النمطية المبنية مسبقًا وفقًا لما يلي
الظروف:

تقع الوحدة في دليل / lib / modules / VERSION / systemtap. هذا الدليل
يجب أن يكون مملوكًا للجذر وألا يكون قابلاً للكتابة على مستوى العالم.

or

· تم التوقيع على الوحدة من قبل موقّع موثوق به. عادةً ما يكون الموقعون الموثوق بهم علامة نظام
تجميع الخوادم التي توقع الوحدات عندما يكون --امتياز يتم تحديد الخيار بواسطة
عميل. انظر خادم الركاب(8) صفحة دليل لمزيد من المعلومات.

· تم بناء الوحدة باستخدام الخيار --privilege = stapusr.

وحدات النواة التي تم إنشاؤها بواسطة STAP يتم تشغيل البرنامج بواسطة ركبة برنامج. الأخير
هو جزء من حزمة Systemtap ، مخصص لتحميل وتفريغ الوحدة (ولكن فقط بتنسيق
المنطقة البيضاء) ، ونقل البيانات من kernel إلى المستخدم. منذ ركبة لا يؤدي أي
فحوصات أمنية إضافية على كائنات kernel التي يتم تقديمها ، سيكون من غير الحكمة لـ a
مسؤول النظام لإضافة مستخدمين غير موثوق بهم إلى ستابديف or ستابوسر المجموعات.

الإقلاع الآمن
إذا تم تشغيل SecureBoot في النظام الحالي في برنامج UEFI الثابت ، فكل وحدات kernel النمطية
يجب أن يوقع. (قد تسمح بعض النوى بتعطيل SecureBoot لفترة طويلة بعد التمهيد باستخدام ملف
تسلسل المفاتيح مثل SysRq-X ، مما يجعل توقيع الوحدات غير ضروري.)
يمكن لخادم الترجمة توقيع الوحدات باستخدام MOK (مفتاح مالك الجهاز) الذي يشترك معه
نظام العميل. راجع صفحة wiki التالية لمزيد من التفاصيل:

https://sourceware.org/systemtap/wiki/SecureBoot

الموارد حدود
يتم تعيين العديد من حدود استخدام الموارد بواسطة وحدات الماكرو في رمز C الذي تم إنشاؤه. قد تكون هذه
تم تجاوزه بـ -D الأعلام. مجموعة مختارة من هذه على النحو التالي:

ماكسنيستينج
الحد الأقصى لعدد استدعاءات الوظائف المتداخلة. يتم تحديده افتراضيًا عن طريق تحليل البرنامج النصي ،
مع إضافة 10 فتحات إضافية للنصوص العودية.

ماكسسترنغلين
الحد الأقصى لطول السلاسل ، الافتراضي 128.

ماكستريلوك
الحد الأقصى لعدد التكرارات لانتظار عمليات التأمين على المتغيرات العامة قبل التصريح
الجمود المحتمل وتخطي المسبار ، الافتراضي 1000.

الحد الأقصى
الحد الأقصى لعدد العبارات المراد تنفيذها أثناء أي إصابة تحقيق واحدة (مع
المقاطعات معطلة) ، الافتراضي 1000. لاحظ أن معالجات المجس المباشر
تفتقر إلى الحلقات أو العودية ، بسبب التحسين ، يمكن تفسير هذه المعلمة
متحفظ جدا.

MAXACTION_INTERRUPTIBLE
الحد الأقصى لعدد العبارات المراد تنفيذها أثناء أي إصابة تحقيق فردية
تم تنفيذه مع تمكين المقاطعات (مثل مجسات البداية / النهاية) ، الافتراضي (MAXACTION *
(متّى 10، XNUMX).

ماكس باك تريس
الحد الأقصى لعدد إطارات المكدس التي ستتم معالجتها في وقت تشغيل stap
فك كما تم إنتاجه بواسطة دالات backtrace في سياق [u]
الصنابير ، الافتراضي 20.

MAXMAPENTRIS
الحد الأقصى الافتراضي لعدد الصفوف في أي صفيف عمومي واحد ، الافتراضي 2048.
يمكن التصريح عن المصفوفات الفردية بحد أكبر أو أصغر بدلاً من ذلك:

عالمي كبير [10000] ، قليل [5]

أو دلالة مع % لجعلها تلتف تلقائيًا.

الحد الأقصى من الأخطاء
أقصى عدد من الأخطاء البرمجية قبل تشغيل الخروج ، الافتراضي 0 ، مما يعني
أن الخطأ الأول سيؤدي إلى الخروج من البرنامج النصي. لاحظ أنه مع
- أخطاء معالج الدعم الخيار ، لا يتم فرض هذا الحد.

ماكسسكيبد
الحد الأقصى لعدد المسابير التي تم تخطيها قبل بدء الخروج ، الافتراضي 100. قيد التشغيل
يعطي systemtap مع الوضع -t (توقيت) مزيدًا من التفاصيل حول المسابير التي تم تخطيها. مع ال
افتراضي -DINTERRUPTIBLE = إعداد واحد ، المسابير التي تم تخطيها بسبب إعادة الدخول ليست كذلك
المتراكمة مقابل هذا الحد. لاحظ أنه مع - أخطاء معالج الدعم
الخيار ، لا يتم فرض هذا الحد.

مينستاك سبيس
الحد الأدنى لعدد بايتات مكدس kernel المجانية المطلوبة لتشغيل معالج اختبار ،
الافتراضي 1024. هذا الرقم يجب أن يكون كبيرا بما يكفي لمعالج التحقيق الخاص
الاحتياجات ، بالإضافة إلى هامش أمان.

ماكسوبروبس
العدد الأقصى من تحقيقات مساحة المستخدم المسلحة بشكل متزامن (uprobes) ، افتراضيًا إلى حد ما
أكبر من عدد نقاط اختبار مساحة المستخدم المسماة في البرنامج النصي. هذا التجمع
من المحتمل أن تكون كبيرة لأن كائنات uprobe الفردية (حوالي 64 بايت
كل) لكل عملية لكل تحقيق مطابق على مستوى البرنامج النصي.

STP_MAXMEMORY
الحد الأقصى لمقدار الذاكرة (بالكيلو بايت) الذي يجب أن تستخدمه وحدة ضغط النظام ،
افتراضي غير محدود. يتضمن حجم الذاكرة حجم الوحدة نفسها ، زائد
أي مخصصات إضافية. هذا فقط يتتبع التخصيصات المباشرة بواسطة systemtap
مدة العرض. هذا لا يتتبع التخصيصات غير المباشرة (كما فعلت kprobes / uprobes / إلخ.
الداخلية).

STP_OVEROAD_THRESHOLD ، STP_OVERLOAD_INTERVAL
الحد الأقصى لعدد دورات الماكينة التي يتم إنفاقها في المجسات على أي وحدة معالجة مركزية لكل فترة زمنية معينة ،
قبل الإعلان عن حالة التحميل الزائد وإغلاق البرنامج النصي. الافتراضات
هي 500 مليون و 1 مليار ، وذلك للحد من استهلاك وحدة المعالجة المركزية للنص stap عند حوالي
50٪.

STP_PROCFS_BUFSIZE
حجم المخازن المؤقتة قراءة مسبار procfs (بالبايت). افتراضات إلى ماكسسترنغلين. هذا
يمكن تجاوز القيمة على أساس كل ملف procfs باستخدام اختبار قراءة procfs
.maxsize (MAXSIZE) المعلمة.

مع البرامج النصية التي تحتوي على مجسات على أي مسار مقاطعة ، من الممكن أن يكون هؤلاء
قد تحدث المقاطعات في منتصف معالج مسبار آخر. التحقيق في المقاطعة
سيتم تخطي المعالج في هذه الحالة لتجنب إعادة الدخول. للتغلب على هذه المشكلة ،
تنفيذ stap مع الخيار -DINTERRUPTIBLE = 0 لإخفاء المقاطعات في جميع أنحاء المسبار
معالج. هذا يضيف بعض الجهد الإضافي إلى المجسات ، لكنه قد يمنع العودة
لحالات المشاكل الشائعة. ومع ذلك ، تحقيقات في معالجات NMI وفي مسار النداء للرقبة
ربما لا يزال يتم تخطي وقت التشغيل بسبب إعادة الدخول.

يمكن للنصوص المتعددة كتابة البيانات في المخزن المؤقت للترحيل بشكل متزامن. يوفر البرنامج النصي المضيف
واجهة للوصول إلى المخزن المؤقت للتتابع الخاص به إلى البرامج النصية للضيف. ثم خرج ملف
يتم دمج الضيوف في إخراج المضيف. لتشغيل برنامج نصي كمضيف ، قم بتنفيذ stap
مع -DRELAYHOST [= الاسم] اختيار. ال الاسم يحدد البرنامج النصي للمضيف الخاص بك بين عدة مضيفين.
أثناء تشغيل المضيف ، قم بتنفيذ stap باستخدام -DRELAYGUEST [= الاسم] لإضافة نص ضيف إلى
يستضيف. لاحظ أنه يجب عليك تفريغ الضيوف قبل تفريغ مضيف. إذا كان هناك بعض الضيوف
متصل بالمضيف ، سيفشل إلغاء تحميل المضيف.

في حالة حدوث خطأ ما STAP or ركبة بعد أن بدأ المسبار بالفعل
قيد التشغيل ، يمكن للمرء أن يقتل كلتا عمليتي المستخدم بأمان ، ويزيل نواة المجس النشط
وحدة مع رممود. قد يتم فقد أي رسائل تتبع معلقة.

غير مميّز المستخدمين


يعرض Systemtap هياكل البيانات الداخلية لـ kernel والمستخدم الخاص المحتمل
معلومة. لهذا السبب ، يقتصر استخدام إمكانات systemtap الكاملة على الجذر
وللمستخدمين الذين هم أعضاء في مجموعات stapdev و stapusr.

ومع ذلك ، يمكن إتاحة مجموعة محدودة من ميزات systemtap للموثوق بهم ،
المستخدمين غير المتميزين. هؤلاء المستخدمون هم أعضاء في مجموعة stapusr فقط ، أو أعضاء في
مجموعات stapusr و stapsys. يمكن لهؤلاء المستخدمين تحميل وحدات systemtap التي تم
تم تجميعها واعتمادها من قبل خادم ترجمة systemtap موثوق. انظر أوصاف
الخيارات --امتياز و --استخدام الخادم. شاهد اقرأني في الكود المصدري systemtap
للحصول على معلومات حول إعداد خادم ترجمة موثوق به.

القيود المفروضة عندما - الامتياز = stapsys تم تحديده لمنعه
المستخدمون غير المتميزين من:

· الإضرار بالنظام بشكل ضار.

القيود المفروضة عندما - الامتياز = stapusr تم تحديده لمنعه
المستخدمون غير المتميزين من:

· الإضرار بالنظام بشكل ضار.

· الحصول على الوصول إلى المعلومات التي لا تكون في العادة متاحة لأي شخص
مستخدم غير مميز.

· تعطيل أداء العمليات المملوكة لمستخدمي النظام الآخرين.
بعض النفقات العامة للنظام بشكل عام أمر لا مفر منه منذ غير المتميز
سيتم تشغيل تحقيقات المستخدم في الأوقات المناسبة. ماذا نود أن
تجنب هو المقاطعة المستهدفة لعمليات مستخدم آخر والتي لن تفعل ذلك
عادة ما يكون ممكنًا بواسطة مستخدم لا يتمتع بامتيازات.

مسبار القيود
يجوز لعضو في مجموعتي stapusr و stapsys استخدام جميع نقاط التحقيق.

يجوز لعضو من مجموعة stapusr فقط استخدام المسابير التالية:

· تبدأ ، تبدأ (ن)

· النهاية ، النهاية (ن)

· خطأ (اسم)

· أبداً

· عملية. * ، حيث تكون العملية المستهدفة مملوكة للمستخدم.

· الموقت. {jiffies، s، sec، ms، msec، us، usec، ns، nsec} (n) *

· جهاز ضبط الوقت. hz (n)

SCRIPT لغة القيود
ميزات لغة البرمجة النصية التالية غير متاحة لجميع المستخدمين الذين لا يتمتعون بامتيازات:

أي ميزة يتم تمكينها بواسطة خيار وضع المعلم (-g).

جزءا لا يتجزأ من C كود.

مدة العرض القيود
يتم وضع قيود وقت التشغيل التالية على جميع المستخدمين غير المتميزين:

· فقط رمز وقت التشغيل الافتراضي (انظر -R) يمكن استخدامها.

يتم وضع قيود إضافية على أعضاء مجموعة stapusr فقط:

· لا يسمح بالتحقق من العمليات التي يملكها مستخدمون آخرون.

· الوصول إلى ذاكرة kernel (قراءة وكتابة) غير مسموح به.

COMMAND خط OPTION القيود
توفر بعض خيارات سطر الأوامر الوصول إلى الميزات التي يجب ألا تكون متاحة للجميع
المستخدمون غير المتميزين:

قد لا يتم تحديد · -g.

· لا يجوز لعميل خادم الترجمة استخدام الخيارات التالية:

-a ، -B ، -D ، -I ، -r ، -R

البيئة القيود
يجب عدم تعيين متغيرات البيئة التالية لجميع المستخدمين غير المتميزين:

SYSTEMTAP_RUNTIME
SYSTEMTAP_TAPSET
SYSTEMTAP_DEBUGINFO_PATH

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

هناك فئتان من وظائف tapset غير المميزة. تتكون الفئة الأولى من
وظائف المنفعة المتاحة دون قيد أو شرط لجميع المستخدمين ؛ وتشمل هذه
أشياء مثل:

وحدة المعالجة المركزية: طويلة ()
مخرج ()
str_replace: سلسلة (prnt_str: string ، srch_str: string ، rplc_str: string)

الفئة الثانية تتكون مما يسمى ب امتياز myproc الوظائف التي يمكنها فقط
جمع المعلومات ضمن عملياتهم الخاصة. البرامج النصية التي ترغب في استخدام هذه الوظائف
يجب اختبار نتيجة وظيفة tapset is_myproc ولا تستدعي هذه الوظائف إلا إذا كان
النتيجة هي 1. سينتهي البرنامج النصي فورًا إذا تم استدعاء أي من هذه الوظائف بواسطة ملف
مستخدم غير مميز ضمن تحقيق ضمن عملية لا يملكها هذا المستخدم.
أحد أمثلة امتياز myproc تشمل الوظائف:

print_usyms (stk: string)
user_int: طويل (addr: long)
اسم المستخدم: سلسلة (العنوان: طويل)

يتم تشغيل خطأ تجميع عندما تكون أي وظيفة ليست في أي من الفئات المذكورة أعلاه
تستخدم من قبل أعضاء مجموعة stapusr فقط.

لا يجوز لأعضاء مجموعة stapusr استخدام أي وظائف أخرى مدمجة.

ALTERNATE عادات


كما هو موضح أعلاه ، يتضمن وضع وقت التشغيل الافتراضي الخاص بـ systemtap بناء وتحميل kernel
وحدات ، مع تقديم مقايضات أمنية مختلفة. يتضمن Systemtap الآن ملف
الواجهة الخلفية للنموذج الأولي ، محددة بـ - وقت التشغيل = داينست، والذي يستخدم Dyninst لأداة
عمليات المستخدم الخاصة في وقت التشغيل. هذه الواجهة الخلفية لا تستخدم وحدات kernel ، ولا تفعل ذلك
تتطلب امتيازات الجذر ، ولكنها مقيدة فيما يتعلق بأنواع المسابير وغيرها
التي قد يستخدمها البرنامج النصي.

إنّ كافة أنواع عهود الـ داينست يعمل وقت التشغيل في وضع إرفاق الهدف ، لذا فهو يتطلب ملف -c COMMAND or -x
PID عملية. على سبيل المثال:

stap - وقت التشغيل = dyninst -c 'stap -V' \
-E 'probe process.function ("main")
{println ("مرحبًا من Dyninst!")} '

قد يكون من الضروري تعطيل عملية فحص selinux متضاربة مع

#setseboolallow_execstack 1

EXIT الوضع


يعود مترجم systemtap عمومًا برمز نجاح يساوي 0 إذا طلب ذلك
تمت معالجة البرنامج النصي وتنفيذه بنجاح من خلال التمرير المطلوب. خلاف ذلك،
قد تتم طباعة الأخطاء على stderr ويتم إرجاع رمز الفشل. يستخدم -v or -VP N إلى
زيادة الإسهاب (العام أو التمريري) لتحديد مصدر المشكلة.

في وضع القوائم (-l و -L) ، يتم عادةً منع رسائل الخطأ. رمز النجاح 0
يتم إرجاعها إذا تم العثور على مسبار مطابق واحد على الأقل.

يعتبر البرنامج النصي الذي يتم تنفيذه في المسار 5 الذي تمت مقاطعته بـ ^ C / SIGINT
ناجح.

الحرمان


بمرور الوقت ، قد تخضع بعض ميزات لغة البرنامج النصي ومكتبة tapset
التغييرات غير المتوافقة ، بحيث لا يجوز للنص المكتوب مقابل إصدار قديم من systemtap
أطول المدى. في هذه الحالات ، قد يكون من المفيد تشغيل systemtap بامتداد --متناسق VERSION
علم ، مع تحديد آخر إصدار عمل معروف. نظام التشغيل
- تحقق من الإصدار ستصدر العلامة تحذيرًا إذا تم العثور على أي عناصر غير متوافقة محتملة
معرب. يمكن العثور على تفاصيل الإيقاف التاريخية في ملف NEWS.

استخدم stap عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad




×
الإعلانات
❤️تسوق أو احجز أو اشترِ هنا - بدون تكلفة، مما يساعد على إبقاء الخدمات مجانية.