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