DTRACE(1) General Commands Manual DTRACE(1)

dtrace - ابزار سازگاری ردیابی پویا DTrace مبتنی بر SystemTap

dtrace -s file [OPTIONS]

دستور dtrace توصیف‌های پروب تعریف‌شده در file.d را از طریق گزینه -h به یک فایل هدر پروب یا از طریق گزینه -G به یک فایل توصیف پروب تبدیل می‌کند.

تولید فایل هدر systemtap.
تولید فایل آبجکت تعریف پروب systemtap. این گزینه کامپایلر C را با مجموعه‌ای معقول از فلگ‌های کامپایلر فراخوانی می‌کند. در صورت نیاز به افزودن گزینه‌های بیشتر، فلگ‌های موجود در متغیر محیطی CFLAGS به کامپایلر منتقل خواهند شد. اگر این میزان کنترل کافی نیست، از گزینه -k برای نگهداری فایل C تولیدشده و کامپایل دستی آن استفاده کنید.
نام فایل خروجی را تعیین می‌کند. اگر گزینه -G داده شود، فایل خروجی file.o نامیده خواهد شد؛ اگر گزینه -h داده شود، فایل خروجی file.h نام خواهد گرفت.
اجرای پیش‌پردازنده cpp روی فایل ورودی در هنگام استفاده از گزینه -h.
مسیر include مشخص‌شده را در صورت استفاده از گزینه -C به cpp ارسال می‌کند.
نگهداری فایل‌های موقت، به عنوان مثال کد منبع زبان C مربوط به گزینه -G.

ابزار Systemtap با پشتیبانی از پروب‌های ایستا در برنامه‌های کاربری dtrace سازگاری کامل در سطح کد منبع دارد. با فرض فایلی به نام test.d شامل محتوای زیر:

provider sdt_probes
{
  probe test_0 (int type);
  probe test_1 (struct astruct node);
};
struct astruct {int a; int b;};

سپس دستور dtrace -s test.d -G فایل تعریف پروب test.o را ایجاد خواهد کرد و دستور dtrace -s test.d -h فایل هدر پروب test.h را تولید خواهد نمود. سپس برنامه کاربردی می‌تواند از ماکروهای تولیدشده به این صورت استفاده کند:

#include "test.h"
 ...
struct astruct s;
 ...
SDT_PROBES_TEST_0(value);
 ...
if (SDT_PROBES_TEST_1_ENABLED())
    SDT_PROBES_TEST_1(expensive_function(s));

سمافورها متغیرهای پرچمی هستند که توسط پروب‌ها برای دور زدن پردازش‌های بالقوه سنگین جهت آماده‌سازی آرگومان‌های پروب‌هایی که شاید حتی فعال نباشند استفاده می‌شوند. این متغیرها هنگام اجرای اسکریپت مرتبط، به طور خودکار توسط systemtap مقداردهی/پاکسازی می‌شوند؛ بنابراین هزینه آماده‌سازی آرگومان تنها در صورت نیاز پرداخت می‌شود. این متغیرهای سمافور درون فایل آبجکت test.o تعریف می‌شوند که در نتیجه باید به برنامه کاربردی پیوند (link) داده شوند.

گاهی اوقات متغیرهای سمافور نه ضروری هستند و نه مفید. صرف‌نظر کردن از آن‌ها می‌تواند فرایند ساخت را با حذف فایل اضافی test.o ساده کند. برای حذف وابستگی به متغیرهای سمافور، هدر <sys/sdt.h> را پیش از test.h در برنامه قرار دهید:

#include <sys/sdt.h>
#include "test.h"
 ...
struct astruct s;
 ...
SDT_PROBES_TEST_0(value);
 ...
if (SDT_PROBES_TEST_1_ENABLED())
   SDT_PROBES_TEST_1(cheap_function(s));

در این حالت، آزمایش ()ENABLED روی مقدار 1 ثابت خواهد بود.

stap(1),
stappaths(7)

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

error::reporting(7stap), https://sourceware.org/systemtap/wiki/HowToReportBugs