Questo articolo risponde alle domande frequenti sulla raccolta di dump in .NET.
Perché si ottengono dump solo in Linux se [dotnet-dump](dotnet-dump.md) o il [processo di arresto anomalo del sistema](dumps.md#collect-dumps-on-crash) è in esecuzione con privilegi elevati?
Nei sistemi basati su Linux, /proc/sys/kernel/ptrace_scope
controlla chi può chiamare ptrace
e quali processi possono tracciare. È consigliabile impostarlo su 1
, vale a dire che solo i processi nella stessa catena di origine possono usare il tracciamento. Qualsiasi valore superiore a questo richiede l'elevazione o può disabilitare completamente ptrace
.
Perché non è possibile raccogliere dump durante l'esecuzione all'interno di un contenitore?
Per le applicazioni in esecuzione in qualsiasi tecnologia Open Container Initiative, il profilo di seccomp
deve consentire le chiamate a ptrace
. Ad esempio, Docker
usa containerd sotto forma di runtime del contenitore. Quando si inizializza il runtime, specifica un profilo seccomp predefinito che consente ptrace
solo se l'host contenitore ha una versione del kernel superiore alla 4.8 o se è stata specificata la funzionalità di CAP_SYS_PTRACE
.
Perché non è possibile raccogliere dump in macOS?
In macOS l'uso di ptrace
richiede che l'host del processo di destinazione sia autorizzato correttamente. Per informazioni sui diritti minimi obbligatori, vedere Entitlement predefiniti.
Dove è possibile ottenere altre informazioni su come è possibile sfruttare i dump per diagnosticare i problemi nell'applicazione .NET?
Come è possibile risolvere "Non è stato possibile trovare alcuna versione del framework compatibile"
In Linux, la variabile di ambiente DOTNET_ROOT
deve puntare alla cartella corretta quando impostata. Quando punta a un'altra versione di .NET, dotnet-dump
genera sempre questo errore. Quando la variabile di ambiente DOTNET_ROOT
non è impostata, viene generato un errore diverso ("È necessario installare .NET per eseguire l'applicazione").