DTrace su Windows riceve i suoi aggiornamenti 20H1 con supporto ARM64
DTrace è il popolare strumento di debug e diagnostica open source. È stato originariamente creato per Solaris ed è diventato disponibile per Linux, FreeBSD, NetBSD e macOS. Microsoft lo ha portato su Windows e aggiunge una parte di aggiornamenti con l'aggiornamento delle funzionalità 20H1.
Annuncio
DTrace è un framework di tracciamento dinamico che consente a un amministratore o sviluppatore di dare un'occhiata in tempo reale a un sistema in modalità utente o kernel. DTrace ha un linguaggio di programmazione potente e di alto livello in stile C che consente di inserire dinamicamente punti di traccia. Utilizzando questi punti di traccia inseriti dinamicamente, è possibile filtrare in base a condizioni o errori, scrivere codice per analizzare schemi di blocco, rilevare deadlock, ecc.
In Windows, DTrace estende Event Tracing for Windows (ETW) che è statico e non offre la possibilità di inserire punti di traccia a livello di codice in fase di esecuzione.
Tutte le API e le funzionalità utilizzate da dtrace.sys sono chiamate documentate.

Microsoft ha implementato un driver speciale per Windows 10 che consente di eseguire una serie di ruoli di monitoraggio del sistema. Il driver è integrato in Windows 10 a partire dalla versione 1903.
A partire da Windows 10 insider build 19041.21, DTrace include i seguenti miglioramenti.
Anteprima ARM64
Sì, è giusto! DTrace ora supporta ARM64 in modalità anteprima. L'MSI ARM64 è disponibile nel collegamento per il download sopra elencato.
Puoi usarlo sul tuo Surface Pro X eseguendo l'ultima build di Windows 10 Insider Preview (20H1), a partire da 19041.21.
DTrace su Surface Pro X
Modalità utente Stackwalk
Nell'anteprima, la funzione stackwalk in DTrace era limitata alla modalità Kernel (stack). Questo aggiornamento aggiunge il supporto per la funzione stackwalk in modalità utente (ustack). Come lo stack, la funzione ustack è completamente compatibile con le specifiche DTrace open source. Può essere invocato in tre modi specificando frame (profondità) e dimensioni (ignorati per ora) o void.
- Ustack (nframe, dimensione)
- Ustack (nframe)
- Ustack()
Mentre ustack() può determinare l'indirizzo del frame chiamante quando si attiva il probe, gli stack frame lo faranno non essere tradotto in simboli fino a quando l'azione ustack() non viene elaborata in modalità utente dal consumatore DTrace. Il download dei simboli può rallentare l'output. Quindi, è meglio usare questa funzione con simboli memorizzati nella cache locale come di seguito.
dtrace -n "profilo-1ms /arg1/ {ustack (50, 0); exit (0);} " -y C:\symbols. dtrace: descrizione 'profile-1ms' corrisponde a 1 sonda. ID CPU FUNZIONE: NOME 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44
Supporto per dump live
Windows usa comunemente qualcosa chiamato discarica dal vivo per aiutare a diagnosticare rapidamente i problemi. I dump live aiutano a risolvere i problemi che coinvolgono più processi o problemi a livello di sistema senza tempi di inattività. In 20H1, DTrace su Windows può essere utilizzato per acquisire un live dump dall'interno di uno script D utilizzando il lkd() impianto DTrace. Un caso d'uso comune di questa funzione è quello di strumentare il percorso di errore (come il codice di ritorno indica un errore) e acquisire un live dump proprio nel punto di errore per la diagnostica avanzata. Per ulteriori informazioni sul supporto del live dump, vedere DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Attivazione Live dump \n \");exit (0); }}" dtrace: descrizione 'syscallreturn ' corrisponde a 1411 sonde. dtrace: consentire azioni distruttive. ID CPU FUNZIONE: NOME 0 181 NtDeviceIoControlFile: return Triggering Live dump dir c:\Windows\LiveKernelReports Il volume nell'unità C non ha etichetta. Il numero di serie del volume è 70F4-B9F6 Directory di c:\Windows\LiveKernelReports 11/05/2019 17:20<DIR>. 11/05/2019 17:20 <DIR>.. 11/05/2019 17:19 <DIR> DTRACE. 05/11/2019 17:20 53.395.456 DTRACE-20191105-1720.dmp.
Tracciamento ETW
Tracciamento ETW è lo strumento più utilizzato per il debug su Windows. Nell'anteprima di DTrace su Windows 19H1, abbiamo aggiunto il supporto per la strumentazione degli eventi registrati e manifestati utilizzando il fornitore ETW.
Nel 20H1, abbiamo ulteriormente migliorato questa struttura per creare nuovi eventi ETW al volo dall'interno di uno script D utilizzando il ETW_Trace() servizio, struttura. Ciò è utile in situazioni in cui gli eventi ETW esistenti sono insufficienti e si desidera aggiungere ulteriori punti di traccia ETW senza modificare il codice di produzione.
Per maggiori informazioni su ETW_Trace struttura e fornitore ETW, vedere DTrace ETW.
/* Eseguendo l'esempio del provider GitHub ETW (link sotto) per stampare l'evento delle informazioni sulla memoria del nodo. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d ID partizione: 0. Conteggio: 1. Numero di nodo: 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. }
Se sei interessato all'installazione di DTrace, controlla come è possibile farlo qui.
Puoi scaricare il pacchetto DTrace MSI aggiornato da qui.
Eccolo codice sorgente e script avanzati.
Fonte