DTrace พร้อมใช้งานบน Windows. แล้ว
การอัปเดตฟีเจอร์ Windows 10 ครั้งต่อไป (อัปเดตในครึ่งปีแรก เดือนเมษายน 2019 เวอร์ชัน 1903) จะรวมการรองรับ DTrace ซึ่งเป็นเครื่องมือดีบักและวินิจฉัยโอเพนซอร์สยอดนิยม เดิมสร้างขึ้นสำหรับ Solaris และพร้อมใช้งานสำหรับ Linux, FreeBSD, NetBSD และ macOS Microsoft ได้ย้ายไปยัง Windows
DTrace เป็นเฟรมเวิร์กการติดตามแบบไดนามิกที่ช่วยให้ผู้ดูแลระบบหรือนักพัฒนาสามารถดูระบบแบบเรียลไทม์ได้ทั้งในโหมดผู้ใช้หรือโหมดเคอร์เนล DTrace มีภาษาการเขียนโปรแกรมระดับสูงและทรงพลังสไตล์ C ที่ให้คุณแทรกจุดติดตามแบบไดนามิกได้ เมื่อใช้จุดติดตามที่แทรกแบบไดนามิกเหล่านี้ คุณสามารถกรองเงื่อนไขหรือข้อผิดพลาด เขียนโค้ดเพื่อวิเคราะห์รูปแบบการล็อก ตรวจจับการชะงักงัน ฯลฯ
บน Windows DTrace ขยาย Event Tracing สำหรับ Windows (ETW) ซึ่งเป็นสแตติกและไม่ให้ความสามารถในการแทรกจุดการติดตามโดยทางโปรแกรมขณะรันไทม์
API และการทำงานทั้งหมดที่ใช้โดย dtrace.sys เป็นการเรียกเอกสาร
Microsoft ได้ใช้ไดรเวอร์พิเศษสำหรับ Windows 10 ที่อนุญาตให้ดำเนินการตรวจสอบระบบได้หลายบทบาท ไดรเวอร์นี้จะรวมอยู่ใน Windows 10 เวอร์ชัน 1903 นอกจากนี้ ปัจจุบัน DTrace ต้องการให้ Windows เริ่มทำงานด้วยการเปิดใช้งานดีบักเกอร์เคอร์เนล
ซอร์สโค้ดสำหรับเครื่องมือ DTrace ที่พอร์ตมีอยู่ใน GitHub เยี่ยมชมเพจ “DTrace บน Windows” ภายใต้โปรเจ็กต์ OpenDTrace บน GitHub ให้ได้ชมกัน
ตั้งค่า DTrace ใน Windows 10
ข้อกำหนดเบื้องต้นสำหรับการใช้คุณสมบัติ
- Windows 10 วงใน สร้าง 18342 หรือสูงกว่า
- ใช้ได้เฉพาะบน x64 Windows และรวบรวมข้อมูลการติดตามสำหรับกระบวนการ 64 บิตเท่านั้น
-
โปรแกรม Windows Insider เป็น เปิดใช้งาน และ กำหนดค่า ด้วยบัญชี Windows Insider ที่ถูกต้อง
- เยี่ยมชมการตั้งค่า->อัปเดตและความปลอดภัย->โปรแกรม Windows Insider เพื่อดูรายละเอียด
คำแนะนำ:
-
ชุดการกำหนดค่า BCD:
- bcdedit /set dtrace on
- หมายเหตุ คุณต้องตั้งค่าตัวเลือก bcdedit อีกครั้ง หากคุณอัปเกรดเป็นบิลด์ Insider ใหม่
-
ดาวน์โหลด และติดตั้งแพ็คเกจ DTrace จาก ศูนย์ดาวน์โหลด.
- สิ่งนี้จะติดตั้งส่วนประกอบโหมดผู้ใช้ ไดรเวอร์ และแพ็คเกจคุณสมบัติเพิ่มเติมตามความต้องการที่จำเป็นสำหรับ DTrace เพื่อให้ทำงานได้
- ไม่บังคับ: อัปเดต PATH ตัวแปรสภาพแวดล้อม ที่จะรวม C:\Program Files\DTrace
- ตั้งค่า PATH=%PATH%;"C:\Program Files\DTrace"
- ติดตั้ง เส้นทางสัญลักษณ์
- สร้างไดเร็กทอรีใหม่สำหรับการแคชสัญลักษณ์ในเครื่อง ตัวอย่าง: mkdir c:\symbols
- ชุด _NT_SYMBOL_PATH=srv*C:\สัญลักษณ์*http://msdl.microsoft.com/download/symbols
- DTrace ดาวน์โหลดสัญลักษณ์ที่จำเป็นโดยอัตโนมัติจากเซิร์ฟเวอร์สัญลักษณ์และแคชไปยังพาธในเครื่อง
-
ไม่จำเป็น:ตั้งค่าเคอร์เนลดีบักเกอร์ การเชื่อมต่อกับเครื่องเป้าหมาย (ลิงก์ MSDN). นี่คือ เท่านั้น จำเป็นหากคุณต้องการติดตามเหตุการณ์เคอร์เนลโดยใช้ FBT หรือผู้ให้บริการรายอื่น
- โปรดทราบว่าคุณจะต้องปิดการใช้งาน Secureboot และ Bitlocker บน C:, (หากเปิดใช้งาน) หากคุณต้องการตั้งค่าดีบักเกอร์เคอร์เนล
- รีบูต เครื่องเป้าหมาย
ใช้ DTrace
- เปิดและ พรอมต์คำสั่งยกระดับ.
- ดำเนินการหนึ่งในคำสั่งต่อไปนี้:
# สรุป Syscall โดยโปรแกรมเป็นเวลา 5 วินาที: dtrace -Fn "tick-5sec { exit (0);} syscallentry{ @num[pid, execname] = count();} " # สรุปชุดตัวจับเวลา/ยกเลิกโปรแกรมเป็นเวลา 3 วินาที: dtrace -Fn "tick-3sec { exit (0);} syscall:: Nt*Timer*:entry { @[probefunc, execname, pid] = count();}" # โครงสร้างเคอร์เนลของกระบวนการ Dump System: (ต้องการ เส้นทางสัญลักษณ์ไปยัง ถูกตั้งค่า) dtrace -n "BEGIN{print(*(struct nt`_EPROCESS *) nt`PsInitialSystemProcess);exit (0);}" # ติดตามเส้นทางผ่าน NTFS เมื่อเรียกใช้ notepad.exe (ต้องใช้ KD a
คำสั่ง dtrace -lvn syscall จะแสดงรายการโพรบทั้งหมดและพารามิเตอร์ที่มีอยู่จากผู้ให้บริการ syscall
ต่อไปนี้คือผู้ให้บริการบางส่วนที่มีใน Windows และสิ่งที่พวกเขาใช้งาน
- syscall – ระบบ NTOS โทร
- fbt (Function Boundary Tracing) – การป้อนและส่งคืนฟังก์ชันเคอร์เนล
- pid – การติดตามกระบวนการในโหมดผู้ใช้ เช่นเดียวกับโหมดเคอร์เนล FBT แต่ยังช่วยให้การวัดออฟเซ็ตของฟังก์ชันตามอำเภอใจ
-
etw (Event Tracing for Windows) – อนุญาตให้กำหนดโพรบสำหรับ ETW ผู้ให้บริการนี้ช่วยใช้ประโยชน์จากเครื่องมือระบบปฏิบัติการที่มีอยู่ใน DTrace
- นี่เป็นส่วนเสริมที่เราได้ทำกับ DTrace เพื่อให้เปิดเผยและรับข้อมูลทั้งหมดที่ Windows ให้ไว้แล้วใน ETW.
สคริปต์ตัวอย่างเพิ่มเติมที่ใช้ได้กับสถานการณ์ Windows สามารถพบได้ในนี้ ไดเรกทอรีตัวอย่าง.
แหล่งที่มา: Microsoft