يتلقى DTrace على Windows تحديثات 20H1 مع دعم ARM64
DTrace هي أداة تشخيص وتصحيح الأخطاء الشائعة مفتوحة المصدر. تم تصميمه في الأصل لـ Solaris ، وأصبح متاحًا لأنظمة Linux و FreeBSD و NetBSD و macOS. قامت Microsoft بنقله إلى Windows ، وإضافة جزء من التحديثات إليه مع تحديث ميزة 20H1.
الإعلانات
DTrace هو إطار عمل تتبع ديناميكي يسمح للمسؤول أو المطور بإلقاء نظرة في الوقت الفعلي على النظام إما في وضع المستخدم أو kernel. يحتوي DTrace على مستوى عالٍ ولغة برمجة قوية تسمح لك بإدراج نقاط التتبع ديناميكيًا. باستخدام نقاط التتبع المُدرجة ديناميكيًا ، يمكنك التصفية حسب الظروف أو الأخطاء ، وكتابة التعليمات البرمجية لتحليل أنماط القفل ، واكتشاف حالات الجمود ، إلخ.
في Windows ، يقوم DTrace بتوسيع تتبع الأحداث لنظام التشغيل Windows (ETW) وهو ثابت ولا يوفر القدرة على إدراج نقاط التتبع برمجيًا في وقت التشغيل.
جميع واجهات برمجة التطبيقات والوظائف المستخدمة بواسطة dtrace.sys هي مكالمات موثقة.
قامت Microsoft بتطبيق برنامج تشغيل خاص لنظام التشغيل Windows 10 يسمح بأداء عدد من أدوار مراقبة النظام. تم إنشاء برنامج التشغيل في نظام التشغيل Windows 10 بدءًا من الإصدار 1903.
بدءًا من إصدار Windows 10 Insider 19041.21 ، يأتي DTrace مع التحسينات التالية.
معاينة ARM64
نعم هذا صحيح! يدعم DTrace الآن ARM64 في وضع المعاينة. يتوفر ARM64 MSI في رابط التنزيل المذكور أعلاه.
يمكنك استخدامه على الخاص بك جهاز Surface Pro X تشغيل أحدث إصدار من Windows 10 Insider Preview (20H1) ، بدءًا من 19041.21.
DTrace على Surface Pro X
وضع المستخدم Stackwalk
في المعاينة ، كانت أداة Stackwalk في DTrace مقصورة على وضع Kernel (مكدس). يضيف هذا التحديث دعمًا لمنشأة وضع المكدس لوضع المستخدم (أوستاك). مثل المكدس ، فإن منشأة ustack متوافقة تمامًا مع مواصفات DTrace مفتوحة المصدر. يمكن استدعاؤه بثلاث طرق من خلال تحديد الإطارات (العمق) والحجم (تم التجاهل حاليًا) أو الباطلة.
- Ustack (إطارات nframes والحجم)
- Ustack (nframes)
- أوستاك ()
بينما يمكن لـ ustack () تحديد عنوان إطار الاستدعاء عند إطلاق المسبار ، فإن إطارات المكدس ستقوم بذلك لا تترجم إلى رموز حتى تتم معالجة الإجراء ustack () في وضع المستخدم بواسطة مستهلك DTrace. يمكن أن يؤدي تنزيل الرمز إلى إبطاء الإخراج. ومن ثم ، فمن الأفضل استخدام هذا المرفق مع الرموز المخزنة محليًا مؤقتًا كما هو موضح أدناه.
dtrace -n "profile-1ms / arg1 / {ustack (50، 0) ؛ خروج (0) ؛} "-y C: \ الرموز. dtrace: وصف "profile-1ms" مسبار واحد متطابق. وظيفة معرف وحدة المعالجة المركزية: NAME 03802: profile-1ms ntdll`ZwAllocateVirtualMemory + 0x14 ntdll`RtlAllocateHeap + 0x3ded ntdll`RtlAllocateHeap + 0x763 ucrtbase`malloc_base + 0x44
دعم التفريغ المباشر
يستخدم Windows بشكل شائع شيئًا يسمى تفريغ لايف للمساعدة في تشخيص المشكلات بسرعة. تساعد عمليات التفريغ المباشر في استكشاف المشكلات وإصلاحها التي تتضمن عمليات متعددة أو مشكلات على مستوى النظام دون توقف. في 20H1 ، يمكن استخدام DTrace على Windows لالتقاط تفريغ مباشر من داخل برنامج D-script باستخدام ملف lkd () مرفق DTrace. من حالات الاستخدام الشائع لهذه الأداة تحديد مسار خطأ الجهاز (مثل رمز الإرجاع يشير إلى فشل) والتقاط تفريغ مباشر عند نقطة الفشل للتشخيصات المتقدمة. لمزيد من المعلومات حول دعم التفريغ المباشر ، راجع DTrace لايف تفريغ.
dtrace -wn "syscallreturn {if (arg0! = 0xc0000001UL) {lkd (0)؛ printf (\ "Triggering Live dump \ n \")؛ exit (0)؛ }}" dtrace: وصف "syscallreturn" مطابق لـ 1411 تحقيقًا. dtrace: السماح بأعمال هدامة. وظيفة معرف وحدة المعالجة المركزية: NAME 0181 NtDeviceIoControlFile: إرجاع Triggering Live dump dir c: \ Windows \ LiveKernelReports لا يوجد ملصق لوحدة التخزين في محرك الأقراص C. الرقم التسلسلي لوحدة التخزين هو 70F4-B9F6 دليل c: \ Windows \ LiveKernelReports 11/05/2019 05:20 مساءً<DIR>. 11/05/2019 05:20 مساءً <DIR>.. 11/05/2019 05:19 مساءً <DIR> DTRACE. 11/05/2019 05:20 PM 53،395،456 DTRACE-20191105-1720.dmp.
تتبع ETW
تتبع ETW هي الأداة الأكثر استخدامًا لتصحيح الأخطاء على Windows. في DTrace بمعاينة Windows 19H1 ، أضفنا دعمًا للأجهزة التي تم تتبعها والأحداث الظاهرة باستخدام مزود ETW.
في 20H1 ، عززنا هذه الميزة بشكل أكبر لإنشاء أحداث ETW جديدة أثناء الطيران من داخل D-script باستخدام ETW_Trace () منشأة. يساعد هذا في المواقف التي تكون فيها أحداث ETW الحالية غير كافية وترغب في إضافة نقاط تتبع ETW إضافية دون تعديل رمز الإنتاج.
لمزيد من المعلومات حول ETW_Trace مرفق و مزود ETW ، ارى DTrace ETW.
/ * تشغيل نموذج موفر GitHub ETW (الرابط أدناه) لطباعة حدث معلومات ذاكرة العقدة. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. * / dtrace -qs numamemstats.d معرف القسم: 0. العدد: 1. رقم العقدة: 1. m_nodeinfo {uint64_t TotalPageCount = 0x1fb558 uint64_t SmallFreePageCount = 0x41 uint64_t SmallZeroPageCount = 0 uint64_t MediumFreePageCount = 0 uint64_t MediumZeroPageCount = 0 uint64_t LargeFreePageCount = 0 uint64_t LargeZeroPageCount = 0 uint64_t HugeFreePageCount = 0 uint64_t HugeZeroPageCount = 0. }
إذا كنت مهتمًا بتثبيت DTrace ، فتحقق من كيفية القيام بذلك هنا.
يمكنك تنزيل حزمة DTrace MSI المحدثة من هنا.
هاهو مصدر الرمز و مخطوطات متقدمة.
مصدر