Diagnostica specializzata

Se il debug o l'osservabilità non è sufficiente, .NET supporta meccanismi di diagnostica aggiuntivi.

Traccia con Event Source

Event Source consente di raccogliere informazioni di diagnostica dettagliate su ciò che accade all'interno dei processi .NET. Include informazioni di telemetria per runtime, GC, librerie e codice dell'applicazione.

I dati di Event Source possono essere raccolti in-process usando l'API System.Diagnostics.Tracing.EventListener o con strumenti diagostici esterni, ad esempio Visual Studio, dotnet-monitor, dotnet-trace, PerfView e gli script Perfcollect. Gli strumenti esterni per raccogliere i dati event source nelle tracce vengono comunemente usati per l'analisi delle prestazioni.

Raccogliere i dati di diagnostica in contenitori

Gli stessi strumenti di diagnostica usati in ambienti Linux non in contenitori possono essere usati anche per raccogliere la diagnostica nei contenitori. Sono necessarie solo alcune modifiche all'utilizzo per assicurarsi che gli strumenti funzionino in un contenitore Docker.

EventPipe

EventPipe è un componente di runtime che può essere usato per raccogliere dati sulla traccia, simili a ETW o LTTng. L'obiettivo di EventPipe è consentire agli sviluppatori .NET di tracciare facilmente le applicazioni .NET senza doversi basare su componenti nativi del sistema operativo specifici della piattaforma, ad esempio ETW o LTTng.

EventPipe è il meccanismo alla base di molti degli strumenti di diagnostica. Può essere usato per l'utilizzo di eventi generati dal runtime, nonché per eventi personalizzati scritti con EventSource.

Dump

Un dump è un file che contiene uno snapshot del processo al momento della creazione del dump. I dump possono essere utili per esaminare lo stato dell'applicazione a scopo di debug.

Simboli

I simboli sono un mapping tra il codice sorgente e il file binario prodotto dal compilatore. Vengono comunemente usati dai debugger .NET e dagli strumenti di traccia per risolvere i numeri di riga di origine, i nomi delle variabili locali e altri tipi di informazioni di diagnostica.

Porta di diagnostica

Il runtime .NET espone un endpoint di servizio che consente ad altri processi di inviare comandi di diagnostica e ricevere risposte tramite un canale IPC. Questo endpoint è denominato porta di diagnostica. I comandi possono essere inviati alla porta di diagnostica per:

  • Acquisire un dump della memoria.
  • Avviare una traccia EventPipe.
  • Richiedere la riga di comando usata per avviare l'app.

DiagnosticSource & DiagnosticListener

DiagnosticSource è un modulo che consente di instrumentare il codice per la registrazione in fase di produzione di payload con dati avanzati da usare all'interno del processo instrumentato. In fase di esecuzione, i consumer possono individuare in modo dinamico le origini dati e sottoscrivere quelle di interesse. System.Diagnostics.DiagnosticSource è stato progettato per consentire agli strumenti in-process di accedere a dati avanzati, ad esempio dalle librerie di strumentazione OpenTelemetry. I dati DiagnosticSource possono essere inviati anche tramite EventPipe, il che consente di raccogliere dati di diagnostica avanzati tramite strumenti dedicati. |

Vedi anche