DTrace w systemie Windows otrzymuje aktualizacje 20H1 z obsługą ARM64
DTrace to popularne narzędzie do debugowania i diagnostyki typu open source. Został pierwotnie zbudowany dla systemu Solaris i stał się dostępny dla systemów Linux, FreeBSD, NetBSD i macOS. Microsoft przeniósł go do systemu Windows i dodaje do niego porcję aktualizacji dzięki aktualizacji funkcji 20H1.
DTrace to dynamiczna platforma śledzenia, która umożliwia administratorowi lub programiście wgląd w system w czasie rzeczywistym w trybie użytkownika lub jądra. DTrace ma wysoki poziom i potężny język programowania w stylu C, który umożliwia dynamiczne wstawianie punktów śledzenia. Korzystając z tych dynamicznie wstawianych punktów śledzenia, możesz filtrować według warunków lub błędów, pisać kod, aby analizować wzorce blokad, wykrywać zakleszczenia itp.
W systemie Windows DTrace rozszerza śledzenie zdarzeń dla systemu Windows (ETW), które jest statyczne i nie zapewnia możliwości programowego wstawiania punktów śledzenia w czasie wykonywania.
Wszystkie interfejsy API i funkcje używane przez dtrace.sys są wywołaniami udokumentowanymi.
Firma Microsoft zaimplementowała specjalny sterownik dla systemu Windows 10, który umożliwia wykonywanie wielu ról monitorowania systemu. Sterownik jest wbudowany w Windows 10 począwszy od wersji 1903.
Począwszy od Windows 10 Insider build 19041.21, DTrace zawiera następujące ulepszenia.
Podgląd ARM64
Tak to prawda! DTrace obsługuje teraz ARM64 w trybie podglądu. ARM64 MSI jest dostępny w linku do pobrania wymienionym powyżej.
Możesz go użyć na swoim Surface Pro X uruchamianie najnowszej wersji Windows 10 Insider Preview (20H1), zaczynając od 19041.21.
Tryb użytkownika Stackwalk
W wersji zapoznawczej funkcja Stackwalk w DTrace była ograniczona do trybu jądra (stosu). Ta aktualizacja dodaje obsługę funkcji stosu użytkownika w trybie użytkownika (ustack). Podobnie jak stos, obiekt ustack jest w pełni kompatybilny ze specyfikacją open source DTrace. Można go wywołać na trzy sposoby, określając ramki (głębokość) i rozmiar (na razie ignorowane) lub void.
- Ustack (nframe, rozmiar)
- Ustack (nframe)
- Ustack()
Podczas gdy ustack() może określić adres ramki wywołującej po uruchomieniu sondy, ramki stosu będą: nie być tłumaczone na symbole, dopóki akcja ustack() nie zostanie przetworzona w trybie użytkownika przez konsumenta DTrace. Pobieranie symboli może spowolnić działanie. Dlatego lepiej jest używać tej funkcji z symbolami buforowanymi lokalnie, jak poniżej.
dtrace -n "profil-1ms /arg1/ {stack (50, 0); exit (0);} " -y C:\symbole. dtrace: opis 'profile-1ms' pasował do 1 sondy. FUNKCJA ID procesora: NAZWA 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44
Obsługa zrzutu na żywo
Windows często używa czegoś, co nazywa się Zrzut na żywo aby pomóc szybko zdiagnozować problemy. Zrzuty na żywo pomagają w rozwiązywaniu problemów związanych z wieloma procesami lub problemami w całym systemie bez przestojów. W 20H1 DTrace w systemie Windows może być używany do przechwytywania zrzutu na żywo z wnętrza skryptu D za pomocą lkd() Funkcja DTrace. Typowym przypadkiem użycia tej funkcji jest instrumentacja ścieżki błędu (na przykład kod powrotu wskazuje na awarię) i przechwytywanie zrzutu na żywo bezpośrednio w punkcie awarii w celu zaawansowanej diagnostyki. Aby uzyskać więcej informacji na temat obsługi zrzutów na żywo, zobacz DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Wyzwalanie zrzutu na żywo \n \");exit (0); }}" dtrace: opis 'syscallreturn' pasował do 1411 sond. dtrace: zezwalanie na destrukcyjne działania. ID procesora FUNKCJA: NAZWA 0 181 NtDeviceIoControlFile: return Triggering Live dump dir c:\Windows\LiveKernelReports Wolumen na dysku C nie ma etykiety. Numer seryjny woluminu to 70F4-B9F6 Katalog c:\Windows\LiveKernelReports 05.11.2019 17:20<DIR>. 11.05.2019 17:20 <DIR>.. 11.05.2019 17:19 <DIR> ŚLEDZENIE. 11.05.2019 17:20 53 395 456 DTRACE-20191105-1720.dmp.
Śledzenie ETW
Śledzenie ETW jest najczęściej używanym narzędziem do debugowania w systemie Windows. W DTrace w wersji zapoznawczej systemu Windows 19H1 dodaliśmy obsługę instrumentacji zdarzeń tracelogged i manifestowanych przy użyciu Dostawca ETW.
W 20H1 dodatkowo ulepszyliśmy tę funkcję, aby tworzyć nowe wydarzenia ETW w locie z wnętrza skryptu D za pomocą ETW_Trace() obiekt. Pomaga to w sytuacjach, w których istniejące zdarzenia ETW są niewystarczające i chcesz dodać dodatkowe punkty śledzenia ETW bez modyfikowania kodu produkcyjnego.
Więcej informacji na temat ETW_Trace obiekt i dostawca ETW, zobaczyć DŚledź ETW.
/* Uruchomienie przykładowego dostawcy usługi GitHub ETW (link poniżej) w celu wydrukowania zdarzenia informacji o pamięci węzła. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Identyfikator partycji: 0. Liczba: 1. Numer węzła: 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 Ogromny ZeroPageCount = 0. }
Jeśli jesteś zainteresowany instalacją DTrace, sprawdź jak można to zrobić tutaj.
Możesz pobrać zaktualizowany pakiet DTrace MSI stąd.
Tutaj jest to kod źródłowy oraz zaawansowane skrypty.
Źródło