DTrace Windows-ზე იღებს თავის 20H1 განახლებებს ARM64 მხარდაჭერით
DTrace არის პოპულარული ღია კოდის გამართვისა და დიაგნოსტიკური ინსტრუმენტი. ის თავდაპირველად შეიქმნა Solaris-ისთვის და ხელმისაწვდომი გახდა Linux, FreeBSD, NetBSD და macOS-ისთვის. მაიკროსოფტმა გადაიტანა ის Windows-ზე და ამატებს განახლებების ნაწილს 20H1 ფუნქციის განახლებით.
DTrace არის დინამიური მოკვლევის ჩარჩო, რომელიც საშუალებას აძლევს ადმინისტრატორს ან დეველოპერს რეალურ დროში შეხედოს სისტემას მომხმარებლის ან ბირთვის რეჟიმში. DTrace-ს აქვს C სტილის მაღალი დონის და ძლიერი პროგრამირების ენა, რომელიც საშუალებას გაძლევთ დინამიურად ჩასვათ კვალი წერტილები. ამ დინამიურად ჩასმული კვალი წერტილების გამოყენებით, შეგიძლიათ გაფილტროთ პირობები ან შეცდომები, დაწეროთ კოდი დაბლოკვის შაბლონების გასაანალიზებლად, ჩიხების აღმოსაჩენად და ა.შ.
Windows-ზე DTrace ავრცელებს მოვლენის თვალყურის დევნებას Windows-ისთვის (ETW), რომელიც სტატიკურია და არ იძლევა პროგრამულად ჩასმის კვალი წერტილების გაშვების დროს.
dtrace.sys-ის მიერ გამოყენებული ყველა API და ფუნქცია არის დოკუმენტირებული ზარები.
Microsoft-მა დანერგა სპეციალური დრაივერი Windows 10-ისთვის, რომელიც საშუალებას გაძლევთ შეასრულოთ სისტემის მონიტორინგის მრავალი როლი. დრაივერი ჩაშენებულია Windows 10-ში 1903 ვერსიიდან.
დაწყებული Windows 10-ის ინსაიდერული Build 19041.21-დან, DTrace მოდის შემდეგი გაუმჯობესებებით.
ARM64 გადახედვა
Დიახ ეს სწორია! DTrace ახლა მხარს უჭერს ARM64-ს გადახედვის რეჟიმში. ARM64 MSI ხელმისაწვდომია ზემოთ ჩამოთვლილ ბმულზე.
თქვენ შეგიძლიათ გამოიყენოთ იგი თქვენს Surface Pro X გაშვებული უახლესი Windows 10 Insider Preview (20H1) build, დაწყებული 19041.21.
მომხმარებლის რეჟიმი Stackwalk
გადახედვისას, DTrace-ში stackwalk ობიექტი შემოიფარგლებოდა ბირთვის რეჟიმში (სტაკი). ეს განახლება ამატებს მხარდაჭერას მომხმარებლის რეჟიმის stackwalk ობიექტისთვის (უსტაკი). Stack-ის მსგავსად, Ustack Facility სრულად თავსებადია ღია კოდის DTrace სპეციფიკაციასთან. მისი გამოძახება შესაძლებელია სამი გზით, ჩარჩოების (სიღრმის) და ზომის (ამჟამად იგნორირებული) ან ბათილი მითითებით.
- Ustack (nframes, ზომა)
- Ustack (nframes)
- Ustack ()
მიუხედავად იმისა, რომ ustack () შეუძლია განსაზღვროს გამოძახების ჩარჩოს მისამართი, როდესაც ზონდი გააქტიურდება, სტეკის ფრეიმები ამას გააკეთებს არ გადაითარგმნოს სიმბოლოებად, სანამ Ustack () მოქმედება არ დამუშავდება მომხმარებლის რეჟიმში DTrace მომხმარებლის მიერ. სიმბოლოს ჩამოტვირთვამ შეიძლება შეანელოს გამომავალი. აქედან გამომდინარე, უმჯობესია გამოიყენოთ ეს საშუალება ადგილობრივად ქეშირებული სიმბოლოებით, როგორიცაა ქვემოთ.
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`0x4_bas
ცოცხალი ნაგავსაყრელის მხარდაჭერა
Windows ჩვეულებრივ იყენებს რაღაც ე.წ ცოცხალი ნაგავსაყრელი პრობლემების სწრაფად დიაგნოსტიკაში დასახმარებლად. ცოცხალი ნაგავსაყრელები დაგეხმარებათ პრობლემების მოგვარებაში, რომლებიც მოიცავს მრავალ პროცესს ან სისტემის პრობლემებს შეფერხების გარეშე. 20H1-ში, DTrace Windows-ზე შეიძლება გამოყენებულ იქნას D-სკრიპტის შიგნიდან ცოცხალი ნაგავსაყრელის გადასაღებად. lkd () DTrace დაწესებულება. ამ მოწყობილობის ჩვეულებრივი გამოყენების შემთხვევაა ინსტრუმენტების შეცდომის გზა (როგორც დაბრუნების კოდი მიუთითებს წარუმატებლობაზე) და გადაღებული ცოცხალი ნაგავსაყრელი პირდაპირ წარუმატებლობის წერტილში გაფართოებული დიაგნოსტიკისთვის. ცოცხალი ნაგავსაყრელის მხარდაჭერის შესახებ დამატებითი ინფორმაციისთვის იხ DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" გააქტიურება Live dump \n \");გამოსვლა (0); }}" dtrace: აღწერა 'sycallreturn' დაემთხვა 1411 ზონდს. dtrace: დესტრუქციული მოქმედებების დაშვება. CPU ID FUNCTION: NAME 0 181 NtDeviceIoControlFile: return Triggering Live dump dir c:\Windows\LiveKernelReports დისკში C მოცულობას არ აქვს ეტიკეტი. ტომის სერიული ნომერია 70F4-B9F6 c:\Windows\LiveKernelReports 11/05/2019 17:20<დირ>. 11/05/2019 05:20 PM <დირ>.. 11/05/2019 05:19 PM <დირ> DTRACE. 11/05/2019 05:20 PM 53,395,456 DTRACE-20191105-1720.dmp.
ETW Tracing
ETW მოკვლევა არის Windows-ზე გამართვის ყველაზე ხშირად გამოყენებული ინსტრუმენტი. DTrace-ში Windows 19H1-ის გადახედვისას, ჩვენ დავამატეთ მხარდაჭერა კვალის ჩანაწერი და მანიფესტირებული მოვლენების ინსტრუმენტული ინსტრუმენტაციისთვის ETW პროვაიდერი.
20H1-ში, ჩვენ კიდევ უფრო გავაუმჯობესეთ ეს საშუალება, რათა შეგვექმნა ახალი 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 პაკეტი აქედან.
Აქ არის საწყისი კოდი და მოწინავე სკრიპტები.
წყარო