Domande frequenti per i dump

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").