Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a cikk a következőre vonatkozik: ✔️ .NET Core 3.0 SDK és újabb verziók
Adatmentések gyűjtése Linuxon
Jótanács
A memóriaképek gyűjtésére, elemzésére és további megjegyzésekre vonatkozó gyakori kérdésekért tekintse meg a Memóriaképek: GYAKORI KÉRDÉSEK című témakört.
A linuxos memóriaképek gyűjtésének két ajánlott módja:
-
dotnet-dumpCLI-eszköz - Az összeomlások memóriaképeit gyűjtő környezeti változók
Linux hibaképek elemzése
A memóriaképek összegyűjtése után elemezhetjük az dotnet-dump eszközzel a dotnet-dump analyze paranccsal. Ezt az elemzési lépést olyan gépen kell futtatni, amely ugyanazzal az architektúrával és Linux-disztribúcióval rendelkezik, mint a környezet, amelyben a memóriaképet rögzítették.
Az dotnet-dump eszköz támogatja a .NET-kódokkal kapcsolatos információk megjelenítését, de más nyelvek, például a C és a C++ kódhibáinak megértéséhez nem hasznos.
Alternatív megoldásként az LLDB használható a linuxos memóriaképek elemzésére, amely lehetővé teszi a felügyelt és a natív kód elemzését is. Az LLDB az SOS-bővítményt használja a felügyelt kód hibakereséséhez. A dotnet-sos CLI-eszköz az SOS telepítéséhez használható, amely számos hasznos parancsot kínál a felügyelt kód hibakereséséhez. A .NET Core-memóriaképek elemzéséhez az LLDB és az SOS a következő .NET Core bináris fájlokat követeli meg a környezetből, amelyben a memóriaképet létrehozták:
- libmscordaccore.so
- libcoreclr.so
- dotnet (az alkalmazás indítására használt host program)
A legtöbb esetben ezek a bináris fájlok az eszközzel tölthetők le dotnet-symbol . Ha a szükséges binárisok nem tölthetők le dotnet-symbol (például ha a forrásból készült .NET Core privát verziója volt használatban), szükség lehet a fent felsorolt fájlok másolására abból a környezetből, amelyben a memóriaképet létrehozták. Ha a fájlok nem a memóriaképfájl mellett találhatók, az LLDB/SOS paranccsal setclrpath <path> beállíthatja azt az elérési utat, ahonnan a fájlokat be kell tölteni, és setsymbolserver -directory <path> beállíthatja azt az elérési utat, hogy hol keresse a szimbólum fájlokat.
Miután a szükséges fájlok elérhetővé válnak, a "dump" betölthető az LLDB-be úgy, hogy a dotnet hosztot adja meg végrehajtható programként a hibakereséshez.
lldb --core <dump-file> <host-program>
Az előző parancsban a <dump-file> az elemzendő kivonat elérési útja, míg a <host-program> az a natív program, amely elindította a .NET Core-alkalmazást. Ez általában a dotnet bináris, kivéve, ha az alkalmazás önálló, ebben az esetben az alkalmazás neve a .dll bővítmény nélkül.
Az LLDB elindítása után előfordulhat, hogy a setsymbolserver parancs használatával a megfelelő szimbólumhelyre kell mutatnia (setsymbolserver -ms a Microsoft szimbólumkiszolgálójának használatához vagy setsymbolserver -directory <path> egy helyi elérési út megadásához). Natív szimbólumok betöltéséhez futtassa a parancsot loadsymbols. Most már használhatja az SOS-parancsokat a dömping elemzéséhez.
Megjegyzés:
Az LLDB a paranccsal telepíthető sudo apt-get install lldb
Memóriaképek elemzése Windows rendszeren
A Linux-gépről gyűjtött memóriaképek elemzése Windows operációs rendszerrel futó gépen is lehetséges, a Visual Studio, Windbg vagy a dotnet-dump eszközök használatával. A Visual Studio és a Windbg is képes natív és felügyelt kód elemzésére, míg a dotnet-dump csak a felügyelt kódot elemzi.
Megjegyzés:
A Visual Studio 16.8-s és újabb verziói lehetővé teszik a .NET Core 3.1.7-es vagy újabb verziójában létrehozott Linux-memóriaképek megnyitását és elemzését .
- Visual Studio – Tekintse meg a Visual Studio hibakeresési útmutatót.
- Windbg – A Windbg segítségével hibakeresést végezhet Linuxos memóriaképeken, azokon a ugyanazon utasításokat követve, amelyeket a Windowsos felhasználói módú memóriaképek hibakereséséhez használna. Linux x64 vagy Arm64 környezetből gyűjtött memóriaképekhez használja a windbg x64-verzióját, valamint a Linux x86-környezetből gyűjtött memóriaképek x86-os verzióját.
- dotnet-dump – A memóriakép megtekintéséhez a dotnet-dump analyze parancsot használja. Linux x64- vagy Arm64-környezetből gyűjtött memóriaképekhez használja a dotnet-dump x64-verzióját, valamint a Linux x86-környezetből gyűjtött memóriaképek x86-os verzióját.
Lásd még
- dotnet-sos az SOS-bővítmény telepítésével kapcsolatos további részletekért.
- dotnet-symbol a szimbólumletöltő eszköz telepítésével és használatával kapcsolatos további részletekért.
- A .NET Core diagnosztikai adattára további részleteket tartalmaz a hibakeresésről, beleértve a hasznos gyakori kérdéseket is.
- Az LLDB telepítése az LLDB Linuxon vagy Macen való telepítésével kapcsolatos utasításokért.
- Gyakorold és hárítsd el a hibákat Linuxon tananyag az összeomlási hibamemóriák hibakereséséről Linuxon