Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek se vztahuje na: ✔️ .NET Core 3.0 SDK a novější verze
Shromažďování výpisů paměti v Linuxu
Návod
Nejčastější dotazy týkající se shromažďování výpisů, jejich analýzy a dalších úskalí si můžete přečíst v Výpisy paměti: Nejčastější dotazy.
Dva doporučené způsoby shromažďování výpisů paměti v Linuxu jsou:
-
dotnet-dumpNástroj CLI - Proměnné prostředí , které shromažďují výpisy stavu systému při chybových ukončeních
Analýza výpisů paměti v Linuxu
Po shromáždění výpisu paměti je možné ho dotnet-dump analyzovat pomocí nástroje s příkazem dotnet-dump analyze . Tento krok analýzy je potřeba spustit na počítači, který má stejnou architekturu a distribuci Linuxu jako prostředí, ve které se zachytával výpis paměti.
Nástroj dotnet-dump podporuje zobrazování informací o kódu .NET, ale není užitečný pro pochopení problémů s kódem pro jiné jazyky, jako je C a C++.
Případně můžete LLDB použít k analýze výpisů paměti v Linuxu, což umožňuje analýzu spravovaného i nativního kódu. Za účelem ladění spravovaného kódu LLDB využívá rozšíření SOS. Nástroj dotnet-sos rozhraní příkazového řádku se dá použít k instalaci SOS, který má mnoho užitečných příkazů pro ladění spravovaného kódu. K analýze výpisů paměti .NET Core vyžadují LLDB a SOS následující binární soubory .NET Core z prostředí, ve které byl výpis paměti vytvořen:
- libmscordaccore.so
- libcoreclr.so
- dotnet (hostitel použitý ke spuštění aplikace)
Ve většině případů je možné tyto binární soubory stáhnout pomocí dotnet-symbol tohoto nástroje. Pokud se nezbytné binární soubory nedají stáhnout pomocí dotnet-symbol (například pokud byla používána privátní verze .NET Core sestavená ze zdroje), může být nutné zkopírovat výše uvedené soubory z prostředí, ve kterém se výpis paměti vytvořil. Pokud se soubory nenacházejí vedle souboru s výpisem paměti, můžete pomocí příkazu setclrpath <path> LLDB/SOS nastavit cestu, ze které se mají načíst, a setsymbolserver -directory <path> nastavit cestu, aby se soubory se symboly hledaly.
Jakmile jsou k dispozici potřebné soubory, můžete výpis načíst do LLDB specifikováním dotnet hostu jako programu pro ladění.
lldb --core <dump-file> <host-program>
V předchozím příkazu je <dump-file> cesta k výpisu paměti pro analýzu a <host-program> je nativní program, který spustil aplikaci .NET Core. Obvykle se jedná o dotnet binární soubor, pokud není aplikace samostatně obsažená, v takovém případě se jedná o název aplikace bez rozšíření.dll .
Po spuštění LLDB může být nutné použít setsymbolserver příkaz k nasměrování na správné místo symbolu (setsymbolserver -ms k použití serveru symbolů Společnosti Microsoft nebo setsymbolserver -directory <path> k určení místní cesty). Pokud chcete načíst nativní symboly, spusťte loadsymbolspříkaz . V tomto okamžiku můžete k analýze výpisu paměti použít příkazy SOS .
Poznámka:
LLDB je možné nainstalovat pomocí příkazu sudo apt-get install lldb
Analýza výpisů paměti ve Windows
Výpisy paměti shromážděné z počítače s Linuxem je také možné analyzovat na počítači s Windows pomocí sady Visual Studio, Windbg nebo nástroje dotnet-dump . Visual Studio i Windbg můžou analyzovat nativní a spravovaný kód, zatímco dotnet-dump analyzuje jenom spravovaný kód.
Poznámka:
Visual Studio verze 16.8 a novější umožňuje otevřít a analyzovat výpisy linuxu generované v .NET Core 3.1.7 nebo novější.
- Visual Studio – Viz průvodce laděním výpisu stavu systému Visual Studio.
- Windbg – Pomocí stejných pokynů , které byste použili k ladění výpisu stavu systému Windows v uživatelském režimu, můžete ladit výpisy systému Linux na windbg. Použijte verzi x64 windbg pro výpisy paměti z prostředí Linux x64 nebo Arm64 a verzi x86 pro výpisy paměti z prostředí Linux x86.
- dotnet-dump – Zobrazte výpis pomocí příkazu dotnet-dump analyze. Použijte x64 verzi dotnet-dump pro výpisy shromážděné z prostředí Linux x64 nebo Linux Arm64 a verzi x86 pro výpisy shromážděné z prostředí Linux x86.
Viz také
- dotnet-sos pro další podrobnosti o instalaci rozšíření SOS.
- dotnet-symbol pro další podrobnosti o instalaci a použití nástroje pro stažení symbolu.
- Další podrobnosti o ladění, včetně užitečných nejčastějších dotazů, najdete v úložišti diagnostiky .NET Core.
- Instalace LLDB pro pokyny k instalaci LLDB v Linuxu nebo Macu
- Praktické postupy a řešení potíží v Linuxu pro kurz ladění výpisů stavu systému v Linuxu