STAPBPF(8) System Manager's Manual STAPBPF(8)

stapbpf - زمان‌اجرای BPF ابزار systemtap

stapbpf [ OPTIONS ] MODULE

برنامه stapbpf بخش پشتی (بک‌اند) مبتنی بر BPF برای ابزار Systemtap است. این برنامه انتظار یک فایل bpf-elf تولیدشده توسط ابزار فرانت‌اند stap (هنگام اجرا با گزینه --runtime=bpf) را دارد.

تفکیک ابزار systemtap به یک بخش فرانت‌اند و یک بخش بک‌اند به کاربر اجازه می‌دهد تا یک اسکریپت systemtap را روی یک سیستم توسعه که دارای اطلاعات اشکال‌زدایی مورد نیاز برای کامپایل اسکریپت است کامپایل کند و سپس شیء مشترک (shared object) حاصل را به یک سیستم عملیاتی که هیچ‌گونه ابزار توسعه یا اطلاعات اشکال‌زدایی روی آن نصب نیست، انتقال دهد.

لطفاً برای آگاهی از شماره نسخه به stappaths(7) مراجعه کنید، یا دستورات زیر را اجرا نمایید:

$ rpm -q systemtap # (برای Fedora/RHEL)
$ apt-get -v systemtap # (برای Ubuntu)

برنامه stapbpf از گزینه‌های زیر پشتیبانی می‌کند. هر گزینه دیگری فهرستی از گزینه‌های پشتیبانی‌شده را چاپ می‌کند.

حالت پرگو (نمایش با جزئیات کامل).
چاپ شماره نسخه و خروج.
نادیده گرفتن هشدارهای اسکریپت.
چاپ پیام راهنما.
متغیر '_stp_target' به PID داده‌شده مقداردهی خواهد شد.
ارسال خروجی به FILE.

MODULE مسیر یک فایل bpf-elf تولیدشده توسط ابزار فرانت‌اند stap (هنگام اجرا با گزینه --runtime=bpf) است.

در اینجا یک مثال بسیار ابتدایی از نحوه تولید یک ماژول stapbpf آورده شده است. ابتدا از stap برای کامپایل یک اسکریپت استفاده کنید. برنامه stap نام ماژول حاصل را در دایرکتوری کاری جاری گزارش خواهد داد.

$ stap --runtime=bpf -p4 -e 'probe begin { printf("Hello World!\n"); exit() }'
stap_28784.bo

برنامه stapbpf را با مسیر ماژول به عنوان آرگومان اجرا کنید.

$ stapbpf ./stap_28784.bo
Hello World!

اگر گزینه -p4 حذف شود، stap به‌طور خودکار stapbpf را فراخوانی خواهد کرد.

این محیط زمان‌اجرا در مراحل اولیه توسعه قرار دارد و در حال حاضر فاقد پشتیبانی از تعدادی از قابلیت‌های موجود در زمان‌اجرای پیش‌فرض است. زیرمجموعه‌ای از نقاط کاوش (probe points) زیر پشتیبانی می‌شوند:

begin
end
kernel.*
process.*
timer.*
perf.*
procfs.*

به‌طور کلی، کاوش‌های مبتنی بر زیرساخت‌های kprobes، uprobes، tracepoint و perf پشتیبانی می‌شوند. برای اطلاعات بیشتر درباره نقاط کاوش و زیرساخت‌های ردیابی که این نقاط بر آنها مبتنی هستند، به stapprobes(3stap) مراجعه کنید.

حلقه‌های for، حلقه‌های foreach و حلقه‌های while فقط در کاوش‌های begin و end قابل استفاده هستند. عبارات try پشتیبانی نمی‌شوند.

پشتیبانی محدودی از عملیات رشته‌ای وجود دارد. متغیرها و مقادیر مستقیم رشته‌ای (literals) به ۶۴ کاراکتر محدود شده‌اند، به‌جز رشته‌های قالب‌بندی printf که حداکثر تا ۲۵۶ کاراکتر مجاز هستند.

زیرمجموعه‌ای از قابلیت‌های تجمیع آماری در دسترس است و تنها از توابع استخراج‌کننده @count(), @sum(), @avg() پشتیبانی می‌شود.

نام فایل bpf-elf تولیدشده توسط ابزار فرانت‌اند stap نباید تغییر داده شود.

برای اطلاعات بیشتر در مورد ایمنی و امنیت، به صفحه راهنمای stap(1) مراجعه کنید.

stap(1), stapprobes(3stap), staprun(8), stapex(3stap)

از پیوند Bugzilla در صفحه وب پروژه یا فهرست پستی ما استفاده کنید. http://sourceware.org/systemtap, <systemtap@sourceware.org>.