دي تريس

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

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

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

في أكتوبر 2011، أعلنت شركة أوراكل عن نقل دي تريس إلى لينكس، وفي عام 2019 أصبح دي تريس الرسمي لفيدورا متاحًا على غيت هاب. لمدة عدة سنوات كان هناك منفذ غير رسمي لبرنامج دي تريس لنظام لينكس، دون أي تغييرات في شروط الترخيص. "The original DTrace is licensed under Sun's (now Oracle) CDDL license. Original copyrights are left intact. No GPL code is incorporated into the release, to avoid legal conflicts." 

في أغسطس 2017، أصدرت شركة أوراكل كود نواة دي تريس بموجب رخصة جنو العمومية+، وكود مساحة المستخدم بموجب رخصة جنو العمومية و. في سبتمبر 2018 أعلنت شركة مايكروسوفت أنها نقلت دي تريس من فري بي إس دي إلى ويندوز.

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

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

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

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

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

# New processes with arguments
dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }'

# Files opened by process
dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'

# Syscall count by program
dtrace -n 'syscall:::entry { @num[execname] = count(); }'

# Syscall count by syscall
dtrace -n 'syscall:::entry { @num[probefunc] = count(); }'

# Syscall count by process
dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }'

# Disk size by process
dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }'

# Pages paged in by process
dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }'

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

 المنصات المدعومة 
أصبح دي تريس متاحًا للاستخدام لأول مرة في نوفمبر 2003، وتم إصداره رسميًا كجزء من صن سولاريس 10 في يناير 2005. كان دي تريس هو أول مكون لمشروع أوبن سولاريس يتم إصدار الكود المصدري الخاص به بموجب  (CDDL).

يعد دي تريس جزءًا لا يتجزأ من إيلوموس والتوزيعات ذات الصلة.

دي تريس هو جزء قياسي من فري بي إس دي ونت بي إس دي.

أضافت Apple دعم دي تريس في نظام التشغيل ماك أو إس إكس 10.5 «ليوبارد»، بما في ذلك واجهة المستخدم الرسومية المسماة إنسترمينتس. تم تضمين أكثر من 40 نص دي تريس من مجموعة أدوات دي تريس في /usr/bin، بما في ذلك الأدوات اللازمة لفحص إدخال/إخراج القرص (iosnoop) وتنفيذ العملية (execsnoop). على عكس المنصات الأخرى التي يدعمها دي تريس، يحتوي نظام التشغيل ماك أو إس إكس على علم (P_LNOATTACH) يمكن للبرنامج تعيينه لمنع تتبع هذه العملية من خلال أدوات تصحيح الأخطاء مثل دي تريس و gdb. في تنفيذ ماك أو إس إكس دي تريس الأصلي، قد يؤثر هذا على تتبع معلومات النظام الأخرى، حيث أن المجسات غير ذات الصلة التي يجب أن يتم تشغيلها أثناء تشغيل برنامج يحمل هذه العلامة المحددة ستفشل في القيام بذلك. نظام التشغيل تم معالجة هذه المشكلة في تحديث X 10.5.3 بعد بضعة أشهر. ومع ذلك، منذ إل كابيتان، تمنع ميزة  المستخدم من تتبع الملفات الثنائية المحمية بشكل افتراضي.

لقد أصبح منفذ لينكس الخاص بـ دي تريس متاحًا منذ عام 2008؛ ويستمر العمل بنشاط على تحسين وإصلاح المشكلات. هناك أيضًا تنفيذ نشط على غيت هاب. يتوفر مزودو النواة القياسيون (fbt، syscall، profile)، بالإضافة إلى مزود «instr» خاص (بعض مزودي سولاريس غير متاحين ). تنفيذ لينكس دي تريس عبارة عن وحدة كرنل قابلة للتحميل، مما يعني أن النواة نفسها لا تتطلب أي تعديل، وبالتالي يسمح دي تريس بتجنب تعارضات ترخيص CDDL مقابل GPL (في شكله المصدر، على الأقل). ومع ذلك، بمجرد تحميل دي تريس، سيتم وضع علامة على مثيل كرنل باعتباره ملوثًا.

في عام 2007، أعلن أحد المطورين في شركة كيو إن إكس أنظمة البرمجيات على مدونته أنه وزميل له يعملان على دمج دي تريس في نظام التشغيل كيو إن إكس.

أضافت شركة شركة أوراكل دعمًا تجريبيًا لـ دي تريس لنظام أوراكل لينكس في عام 2011، كمعاينة تكنولوجية في إصدار أوراكل إنتربرايس كرنل 2، والذي يخضع لرخصة جنو العمومية (تم إصدار وحدة دي تريس كرنل لينكس في الأصل بموجب CDDL). تم الإعلان عن التوفر العام في ديسمبر 2012.DTrace module source code for Linux

في 11 مارس 2019، أصدرت مايكروسوفت إصدارًا من دي تريس لإصدارات ويندوز 10 إنسايدر. قامت مايكروسوفت بتضمين دي تريس كأداة مدمجة في ويندوز سيرفر 2025.

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

يتيح موفرو التطبيقات لـ دي تريس متابعة تشغيل التطبيقات من خلال مكالمات النظام وإلى النواة. تتضمن التطبيقات التي توفر موفري تطبيقات دي تريس كلاً من ماي إس كيو إل وبوستجري إس كيو إل وقاعدة بيانات أوراكل ومحرك أوراكل جريد وفيرفكس.

 المؤلفون والجوائز 
تم تصميم دي تريس وتنفيذه بواسطة  و و.

وقد حصل المؤلفون في عام 2005 على تقدير لابتكاراتهم في دي تريس من  وإم آي تي تكنولوجي ريفيو. فازت دي تريس بالجائزة الكبرى في مسابقة جوائز الابتكار التكنولوجي لعام 2006 التي صحيفة وول ستريت جورنال. تم تكريم المؤلفين من قبل يوسينكس بجائزة مجموعة مستخدمي أدوات البرمجيات (STUG) في عام 2008.

 الاستشهادات 



 المراجع 

 وصلات خارجية 

 أدوات دي تريسأمثلة دي تريس لبريندان جريج (2004)
 مجموعة أدوات دي تريسمجموعة من نصوص دي تريس
 نصوص كتاب دي تريسنصوص كتب دي تريس على غيت هاب
 صفحة فري بي إس دي دي تريسالصفحة الرئيسية لفري بي إس دي دي تريس، تتضمن برنامجًا تعليميًا وسطورًا واحدة
 كتاب دي تريس
 دليل دي تريسكتاب إيلوموس دي تريس
 التتبع الديناميكي باستخدام دي تريس ونظام تابكتاب مجاني مع أمثلة وتمارين
 مختبر دي تريس العمليدورة خطوة بخطوة لتعلم دي تريس
 برنامج تعليمي حول دي لايتأداة واجهة مستخدم رسومية تفاعلية لمطوري C/C++ تعتمد على تقنية دي تريس؛ جزء من أوراكل سولاريس ستوديو قبل الإصدار 12.4
 استكشاف ليوبارد مع دي تريسدي تريس للتصحيح والاستكشاف
 محاضرة تقنية حول دي تريس يقدمها برايان كانتريل
 مخفية في العلن، صن مايكروسيستمز، بقلم برايان كانتريل
 منفذ أوراكل دي تريس الرسمي لنظام لينكس:
 تم دمج تصحيحات دي تريس مع إصدارات نواة لينكس الأخيرة
 جزء مساحة المستخدم من منفذ دي تريس إلى لينكس
 مكتبة تنسيق النوع المضغوط التي يستخدمها دي تريس على لينكس
 دي تريس على فيدورا

تصنيف:برمجيات سطر الأوامر
تصنيف:برمجيات صن ميكروسيستمز
تصنيف:برمجيات نظم حرة
تصنيف:برمجة موجهة بالسمات
تصنيف:مزايا نواة لينكس