Ladění výpisů stavu systému Linux
Tento článek se vztahuje na: ✔️ .NET Core 3.0 SDK a novější verze
Shromažďování výpisů paměti v Linuxu
Tip
Nejčastější dotazy týkající se shromažďování, analýzy a dalších upozornění najdete v tématu Výpisy paměti: Nejčastější dotazy.
Mezi dva doporučené způsoby shromažďování výpisů paměti v Linuxu patří:
dotnet-dump
Nástroj rozhraní příkazového řádku- 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. LLDB používá rozšíření SOS k ladění spravovaného kódu. 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 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é 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 hledala soubory symbolů.
Jakmile jsou k dispozici potřebné soubory, můžete výpis paměti načíst do LLDB zadáním hostitele dotnet jako spustitelného souboru pro ladění:
lldb --core <dump-file> <host-program>
V předchozím příkazu je cesta výpisu paměti k analýze a <host-program>
je nativní program, <dump-file>
který spustil aplikaci .NET Core. Obvykle se jedná o dotnet
binární soubor, pokud není aplikace samostatná, 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 loadsymbols
pří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. Pro výpisy paměti shromážděné z prostředí Linux x64 nebo Arm64 a verze x86 shromažďované z prostředí x86 s Linuxem použijte verzi x64 windbg.
- dotnet-dump – Zobrazení výpisupaměti pomocí příkazu dotnet-dump analyze . Pro výpisy paměti shromážděné z linuxového prostředí x64 nebo Arm64 a verze x86 shromážděných z prostředí x86 s Linuxem x86 použijte verzi dotnet-dump.
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