Ez a cikk választ ad a .NET-beli memóriaképek gyűjtésével kapcsolatos gyakori kérdésekre.
Miért csak akkor kapok memóriaképeket Linuxon, ha a [dotnet-dump](dotnet-dump.md) vagy az [összeomlási folyamat](dumps.md#collect-dumps-on-crash) emelt szinten fut?
Linux-alapú rendszereken szabályozza, /proc/sys/kernel/ptrace_scope
hogy ki és milyen folyamatokat hívhat meg ptrace
. Azt javasoljuk, hogy 1
legyen beállítva – vagyis csak az ugyanabban az ősláncban lévő folyamatok használhatják a nyomkövetést. Az ennél magasabb értékek emelést igényelnek, vagy teljes mértékben letilthatók ptrace
.
Miért nem tudok memóriaképeket gyűjteni, ha tárolón belül futok?
Bármely Open Container Initiative technológiával futó alkalmazás esetében a seccomp
profilnak engedélyeznie kell a hívásokat.ptrace
Például Docker
a motorháztető alatt tárolókörnyezetet használ tároló-futtatókörnyezetként. A futtatókörnyezet inicializálásakor egy alapértelmezett seccomp profilt ad meg, amely csak akkor engedélyezi ptrace
, ha a tároló gazdagép kernelverziója 4.8-nál nagyobb, vagy ha a CAP_SYS_PTRACE
képesség meg van adva.
Miért nem tudok memóriaképeket gyűjteni macOS rendszeren?
MacOS rendszeren a célfolyamat ptrace
gazdagépének megfelelő jogosultságra van szüksége. A minimálisan szükséges jogosultságokról további információt az Alapértelmezett jogosultságok című témakörben talál.
Hol tudhatok meg többet arról, hogyan használhatok memóriaképeket a .NET-alkalmazásom problémáinak diagnosztizálásához?
Íme néhány további erőforrás:
Hogyan oldható meg a "Nem található kompatibilis keretrendszerverzió"
Linux rendszeren a környezeti változónak DOTNET_ROOT
a megfelelő mappára kell mutatnia, amikor be van állítva. Amikor egy másik .NET-verzióra mutat, dotnet-dump
mindig ezt a hibát eredményezi. Ha a DOTNET_ROOT
környezeti változó nincs beállítva, egy másik hiba jön létre ("Az alkalmazás futtatásához telepítenie kell a .NET-et").