Szerkesztés

Megosztás a következőn keresztül:


Gyakori kérdések a memóriaképekről

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?

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