Redigera

Dela via


Vanliga frågor och svar om dumpar

Den här artikeln besvarar vanliga frågor om att samla in dumpar i .NET.

Varför får jag bara dumpar i Linux om [dotnet-dump](dotnet-dump.md) eller min [kraschprocess](dumps.md#collect-dumps-on-crash) körs förhöjd?

I Linux-baserade system /proc/sys/kernel/ptrace_scope styrs vem som kan anropa ptrace och vilka processer de kan spåra. Vi rekommenderar att det anges till – vilket innebär att 1 endast processer i samma anorkedja kan använda spårad. Alla värden som är högre än detta kräver utökade privilegier eller kan inaktiveras ptrace helt och hållet.

Varför kan jag inte samla in dumpar när jag kör i en container?

För program som körs under någon Open Container Initiative-teknik måste profilen seccomp tillåta anrop till ptrace. Använder till exempel Dockercontainer under huven som en containerkörning. När körningen initieras anger den en standardprofil för seccomp som endast tillåter ptrace om containervärden har en kernelversion som är högre än 4,8 eller om CAP_SYS_PTRACE funktionen har angetts.

Varför kan jag inte samla in dumpar på macOS?

För macOS kräver användningen av ptrace värden för målprocessen att vara korrekt berättigad. Information om de minsta nödvändiga rättigheterna finns i Standardrättigheter.

Var kan jag lära mig mer om hur jag kan använda dumpar för att diagnostisera problem i mitt .NET-program?

Här är några ytterligare resurser:

Hur kan jag lösa "Det gick inte att hitta någon kompatibel ramverksversion"

I Linux DOTNET_ROOT måste miljövariabeln peka på rätt mapp när den anges. När den pekar på en annan .NET-version skapar dotnet-dump du alltid det här felet. DOTNET_ROOT När miljövariabeln inte har angetts genereras ett annat fel ("Du måste installera .NET för att köra det här programmet").