Windows Tips & News

DTrace บน Windows ได้รับการอัพเดต 20H1 ด้วย ARM64 Support

click fraud protection
ที่แนะนำ: คลิกที่นี่เพื่อแก้ไขปัญหา Windows และเพิ่มประสิทธิภาพระบบ

DTrace เป็นเครื่องมือดีบักและวินิจฉัยโอเพ่นซอร์สยอดนิยม เดิมสร้างขึ้นสำหรับ Solaris และพร้อมใช้งานสำหรับ Linux, FreeBSD, NetBSD และ macOS Microsoft ได้ย้ายไปยัง Windows และเพิ่มส่วนหนึ่งของการอัปเดตด้วยการอัปเดตคุณลักษณะ 20H1

โฆษณา

DTrace เป็นเฟรมเวิร์กการติดตามแบบไดนามิกที่ช่วยให้ผู้ดูแลระบบหรือนักพัฒนาสามารถดูระบบแบบเรียลไทม์ได้ทั้งในโหมดผู้ใช้หรือโหมดเคอร์เนล DTrace มีภาษาการเขียนโปรแกรมระดับสูงและทรงพลังสไตล์ C ที่ให้คุณแทรกจุดติดตามแบบไดนามิกได้ เมื่อใช้จุดติดตามที่แทรกแบบไดนามิกเหล่านี้ คุณสามารถกรองเงื่อนไขหรือข้อผิดพลาด เขียนโค้ดเพื่อวิเคราะห์รูปแบบการล็อก ตรวจจับการชะงักงัน ฯลฯ

บน Windows DTrace ขยาย Event Tracing สำหรับ Windows (ETW) ซึ่งเป็นสแตติกและไม่ให้ความสามารถในการแทรกจุดการติดตามโดยทางโปรแกรมขณะรันไทม์

API และการทำงานทั้งหมดที่ใช้โดย dtrace.sys เป็นการเรียกเอกสาร

Dtrace บน Windows

Microsoft ได้ใช้ไดรเวอร์พิเศษสำหรับ Windows 10 ที่อนุญาตให้ดำเนินการตรวจสอบระบบได้หลายบทบาท ไดรเวอร์ถูกสร้างขึ้นใน Windows 10 โดยเริ่มในเวอร์ชัน 1903

เริ่มต้นใน Windows 10 Insider build 19041.21 DTrace มาพร้อมกับการปรับปรุงต่อไปนี้

สารบัญซ่อน
ดูตัวอย่าง ARM64
โหมดผู้ใช้ Stackwalk
รองรับการถ่ายโอนข้อมูลสด
การติดตาม ETW

ดูตัวอย่าง ARM64

ใช่มันเป็นสิ่งที่ถูก! DTrace รองรับ ARM64 ในโหมดแสดงตัวอย่างแล้ว ARM64 MSI มีอยู่ในลิงค์ดาวน์โหลดที่แสดงด้านบน

คุณสามารถใช้บนของคุณ Surface Pro X รัน Windows 10 Insider Preview (20H1) รุ่นล่าสุด โดยเริ่มด้วย 19041.21.

Dtrace On ArmDTrace บน Surface Pro X

โหมดผู้ใช้ Stackwalk

ในการแสดงตัวอย่าง สิ่งอำนวยความสะดวก stackwalk ใน DTrace จำกัดเฉพาะโหมดเคอร์เนล (สแต็ก) โปรแกรมปรับปรุงนี้เพิ่มการสนับสนุนสำหรับ usermode stackwalk สิ่งอำนวยความสะดวก (อุสแต็ค). เช่นเดียวกับสแต็ค สิ่งอำนวยความสะดวก ustack เข้ากันได้กับข้อกำหนดโอเพ่นซอร์ส DTrace อย่างสมบูรณ์ สามารถเรียกใช้ได้สามวิธีโดยระบุเฟรม (ความลึก) & ขนาด (ละเว้นสำหรับตอนนี้) หรือเป็นโมฆะ

  • Ustack (nframes ขนาด)
  • Ustack (nframes)
  • Ustack()

ในขณะที่ ustack () สามารถกำหนดที่อยู่ของเฟรมการโทรเมื่อโพรบเริ่มทำงาน เฟรมสแต็กจะ ไม่ถูกแปลเป็นสัญลักษณ์จนกว่าการดำเนินการ ustack () จะได้รับการประมวลผลที่โหมดผู้ใช้โดย DTrace Consumer การดาวน์โหลดสัญลักษณ์อาจทำให้การส่งออกช้าลง ดังนั้นจึงควรใช้สิ่งอำนวยความสะดวกนี้ด้วยสัญลักษณ์แคชในเครื่องดังด้านล่าง

dtrace -n "profile-1ms /arg1/ {ustack (50, 0); ทางออก (0);} " -y C:\symbols. dtrace: คำอธิบาย 'profile-1ms' ตรงกับ 1 โพรบ CPU ID ฟังก์ชัน: NAME 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44

รองรับการถ่ายโอนข้อมูลสด

Windows มักใช้สิ่งที่เรียกว่า การถ่ายโอนข้อมูลสด เพื่อช่วยวินิจฉัยปัญหาได้อย่างรวดเร็ว การถ่ายโอนข้อมูลแบบสดช่วยแก้ไขปัญหาที่เกี่ยวข้องกับหลายกระบวนการหรือปัญหาทั่วทั้งระบบโดยไม่มีการหยุดทำงาน ในครึ่งปีแรก DTrace บน Windows สามารถใช้เพื่อดักจับดัมพ์สดจากภายในสคริปต์ D โดยใช้ lkd() สิ่งอำนวยความสะดวก DTrace กรณีใช้งานทั่วไปของเครื่องมืออำนวยความสะดวกนี้คือเส้นทางข้อผิดพลาดของเครื่องมือ (เช่น รหัสส่งคืนบ่งชี้ความล้มเหลว) และดักข้อมูลสดที่จุดความล้มเหลวสำหรับการวินิจฉัยขั้นสูง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสนับสนุนไลฟ์ดัมพ์ โปรดดูที่ DTrace การถ่ายโอนข้อมูลสด.

dtrace -wn "syscallreturn { ถ้า (arg0 != 0xc0000001UL) { lkd (0); printf(\" ทริกเกอร์การถ่ายโอนข้อมูลสด \n \");ออก (0); }}" dtrace: คำอธิบาย 'syscallreturn' ตรงกับโพรบ 1411 ตัว dtrace: ยอมให้มีการกระทำที่ทำลายล้าง ฟังก์ชันรหัส CPU: NAME 0 181 NtDeviceIoControlFile: return Triggering Live dump dir c:\Windows\LiveKernelReports Volume ในไดรฟ์ C ไม่มีป้ายกำกับ Volume Serial Number คือ 70F4-B9F6 Directory ของ c:\Windows\LiveKernelReports 11/05/2019 05:20 PM<DIR>. 11/05/2019 05:20 น. <DIR>.. 11/05/2019 05:19 น. <DIR> ดีเทรซ 11/05/2019 05:20 น. 53,395,456 DTRACE-20191105-1720.dmp. 

การติดตาม ETW

การติดตาม ETW เป็นเครื่องมือที่ใช้บ่อยที่สุดสำหรับการดีบักบน Windows ในการดูตัวอย่าง DTrace บน Windows 19H1 เราได้เพิ่มการรองรับสำหรับเครื่องมือติดตามเหตุการณ์และเหตุการณ์ที่ปรากฎโดยใช้ ผู้ให้บริการ ETW.

ในครึ่งปีแรก เราได้ปรับปรุงสิ่งอำนวยความสะดวกนี้เพิ่มเติมเพื่อสร้างกิจกรรม ETW ใหม่ได้ทันทีจากภายในสคริปต์ D โดยใช้ 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 ID พาร์ติชัน: 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 ที่อัปเดตได้ จากที่นี่.

นี่แหละ รหัสแหล่งที่มา และ สคริปต์ขั้นสูง.

แหล่งที่มา

ที่แนะนำ: คลิกที่นี่เพื่อแก้ไขปัญหา Windows และเพิ่มประสิทธิภาพระบบ

Windows 10 แก้ไขคลังเก็บแอพที่หายไป

เว็บไซต์นี้ใช้คุกกี้เพื่อปรับปรุงประสบการณ์ของคุณในขณะที่คุณสำรวจเว็บไซต์ จากคุกกี้เหล่านี้ คุกกี...

อ่านเพิ่มเติม

หลีกเลี่ยงการปิดหรือรีสตาร์ทโดยไม่ได้ตั้งใจใน Windows 10 ด้วย ShutdownGuard

หลีกเลี่ยงการปิดหรือรีสตาร์ทโดยไม่ได้ตั้งใจใน Windows 10 ด้วย ShutdownGuard

เป็นที่ทราบกันดีว่า Windows 10 จะรีสตาร์ทพีซีของคุณโดยอัตโนมัติเมื่อติดตั้งการอัปเดต สิ่งนี้ไม่สา...

อ่านเพิ่มเติม

Firefox 44 จะแจ้งให้คุณทราบเกี่ยวกับการเข้าสู่ระบบ HTTP ที่ไม่ปลอดภัย

Firefox 44 จะแจ้งให้คุณทราบเกี่ยวกับการเข้าสู่ระบบ HTTP ที่ไม่ปลอดภัย

ที่แนะนำ: คลิกที่นี่เพื่อแก้ไขปัญหา Windows และเพิ่มประสิทธิภาพระบบMozilla ทำงานอย่างหนักเพื่อทำใ...

อ่านเพิ่มเติม