Condividi tramite


Opzioni di configurazione del runtime per il debug e la profilatura

Questo articolo illustra in dettaglio le impostazioni che è possibile usare per configurare il debug e la profilatura di .NET.

Annotazioni

A partire da .NET 11, le variabili di ambiente del profiler supportano sia DOTNETCORECLR i prefissi che i prefissi. Il DOTNET prefisso è il nuovo standard. CORECLR Viene mantenuto per la compatibilità con le versioni precedenti e potrebbe essere rimosso in futuro.

Abilitare la diagnostica

  • Configura se il debugger, il profiler e la diagnostica EventPipe sono abilitati o disabilitati.
  • Se si omette questa impostazione, la diagnostica è abilitata. Equivale a impostare il valore su 1.
Nome della impostazione Valori
runtimeconfig.json N/A N/A
Variabile di ambiente DOTNET_EnableDiagnostics 1 - abilitato
0 - disabilitata

Abilitare la profilatura

  • Configura se la profilatura è abilitata per il processo in esecuzione.
  • Se si omette questa impostazione, la profilatura è disabilitata. Equivale a impostare il valore su 0.
  • Per caricare un profiler, oltre ad abilitare la profilatura, è necessario configurare anche il GUID del profiler e il percorso del profiler usando queste impostazioni.
Nome della impostazione Valori
runtimeconfig.json N/A N/A
Variabile di ambiente DOTNET_ENABLE_PROFILING 0 - disabilitata
1 - abilitato

Profiler GUID

  • Specifica il GUID del profiler da caricare nel processo in esecuzione.
Nome della impostazione Valori
runtimeconfig.json N/A N/A
Variabile di ambiente CORECLR_PROFILER o DOTNET_PROFILER string-guid

Posizione del profiler

Una volta abilitata la profilatura, il profiler può essere caricato in due modi: con variabili di ambiente (cross-plat) o tramite il Registro di sistema (solo Windows). Le variabili di ambiente del percorso del profiler hanno la precedenza su qualsiasi percorso della libreria COM nel Registro di sistema, se vengono specificati entrambi.

Variabile di ambiente (cross-plat)

  • Specifica il percorso della DLL del profiler da caricare nel processo attualmente in esecuzione (o processo a 32 bit o a 64 bit).
  • Se sono impostate più variabili, le variabili specifiche per la velocità in bit hanno la precedenza. Specificano il livello di bit del profiler da caricare.
Nome della impostazione Valori
Variabile di ambiente CORECLR_PROFILER_PATH o DOTNET_PROFILER_PATH string-path
Variabile di ambiente CORECLR_PROFILER_PATH_32 o DOTNET_PROFILER_PATH_32 string-path
Variabile di ambiente CORECLR_PROFILER_PATH_64 o DOTNET_PROFILER_PATH_64 string-path
Variabile di ambiente CORECLR_PROFILER_PATH_ARM32 o DOTNET_PROFILER_PATH_ARM32 string-path
Variabile di ambiente CORECLR_PROFILER_PATH_ARM64 o DOTNET_PROFILER_PATH_ARM64 string-path

Tramite il Registro di sistema (solo Windows)

Quando le DOTNET_PROFILER_PATH* non sono impostate durante l'esecuzione in Windows, coreclr cerca CLSID dal DOTNET_PROFILER Registro di sistema per trovare il percorso completo della DLL del profiler. Proprio come con qualsiasi DLL del server COM, il CLSID del profiler viene cercato in HKEY_CLASSES_ROOT, che unisce le classi da HKLM e HKCU.

Esportare mappe delle prestazioni e dump jit

  • Abilita o disabilita le mappe delle prestazioni o i dump jit. Questi file consentono agli strumenti di terze parti, ad esempio lo strumento Linux perf , di fornire nomi leggibili per i moduli ReadyToRun (R2R) generati dinamicamente.
  • Se si omette questa impostazione, la scrittura di file di dump jit e mapping delle prestazioni è disabilitata. Equivale a impostare il valore su 0.
  • Quando le mappe delle prestazioni sono disabilitate, non tutte le chiamate gestite verranno risolte correttamente.
  • A seconda della versione del kernel Linux, entrambi i formati sono supportati dallo perf strumento.
  • L'abilitazione delle mappe delle prestazioni o dei dump jit può causare fino a un sovraccarico di 20%, anche se spesso è molto meno. Per ridurre al minimo l'impatto sulle prestazioni, è consigliabile abilitare in modo selettivo le mappe delle prestazioni o i dump jit, ma non entrambi. L'impatto si verifica solo quando l'applicazione è codice JITing. Spesso si verifica all'avvio, ma può verificarsi in un secondo momento se l'applicazione esegue un nuovo percorso di codice per la prima volta.

Nella tabella seguente vengono confrontate le mappe delle prestazioni e le mappe jit.

Formato Description Supportato in
Mappe delle prestazioni /tmp/perf-<pid>.mapGenera , che contiene informazioni simboliche per il codice generato in modo dinamico.
/tmp/perfinfo-<pid>.mapGenera , che include informazioni sui simboli del modulo ReadyToRun (R2R) e viene usato da PerfCollect.
Le mappe delle prestazioni sono supportate in tutte le versioni del kernel Linux.
Dump jit Il formato di dump jit sostituisce le mappe delle prestazioni e contiene informazioni simboliche più dettagliate. Se abilitata, i dump jit vengono restituiti ai /tmp/jit-<pid>.dump file. Kernel Linux versione 5.4 o successiva.
Nome della impostazione Valori
runtimeconfig.json N/A N/A
Variabile di ambiente DOTNET_PerfMapEnabled 0 - disabilitata
1 - mappe delle prestazioni e dump jit entrambi abilitati
2 - Dump jit abilitati
3 - Mappe delle prestazioni abilitate

Indicatori di log delle prestazioni

  • Abilita o disabilita il segnale specificato da accettare e ignorare come marcatore nei log delle prestazioni.
  • Se si omette questa impostazione, il segnale specificato non viene ignorato. Equivale a impostare il valore su 0.
Nome della impostazione Valori
runtimeconfig.json N/A N/A
Variabile di ambiente DOTNET_PerfMapIgnoreSignal 0 - disabilitata
1 - abilitato

Annotazioni

Questa impostazione viene ignorata se DOTNET_PerfMapEnabled viene omesso o impostato su 0 (ovvero disabilitato).