Fouten opsporen in Linux-dumps
Dit artikel is van toepassing op: ✔️ .NET Core 3.0 SDK en latere versies
Dumps verzamelen in Linux
Tip
Zie Dumps voor veelgestelde vragen over dumpverzameling, analyse en andere opmerkingen: Veelgestelde vragen.
De twee aanbevolen manieren om dumps op Linux te verzamelen zijn:
dotnet-dump
CLI-hulpprogramma- Omgevingsvariabelen die dumps verzamelen bij crashes
Dumps analyseren in Linux
Nadat een dump is verzameld, kan deze worden geanalyseerd met behulp van het dotnet-dump
hulpprogramma met de dotnet-dump analyze
opdracht. Deze analysestap moet worden uitgevoerd op een computer met dezelfde architectuur en Linux-distributie als de omgeving waarin de dump is vastgelegd.
Het dotnet-dump
hulpprogramma ondersteunt het weergeven van informatie over .NET-code, maar is niet handig voor het begrijpen van codeproblemen voor andere talen, zoals C en C++.
LlDB kan ook worden gebruikt voor het analyseren van dumps in Linux, waardoor zowel beheerde als systeemeigen code kan worden geanalyseerd. LLDB gebruikt de SOS-extensie om fouten in beheerde code op te sporen. Het CLI-hulpprogramma kan worden gebruikt voor het dotnet-sos
installeren van SOS, met veel nuttige opdrachten voor het opsporen van fouten in beheerde code. Als u .NET Core-dumps wilt analyseren, vereisen LLDB en SOS de volgende binaire .NET Core-bestanden uit de omgeving waarin de dump is gemaakt:
- libmscordaccore.so
- libcoreclr.so
- dotnet (de host die wordt gebruikt om de app te starten)
In de meeste gevallen kunnen deze binaire bestanden worden gedownload met behulp van het dotnet-symbol
hulpprogramma. Als de benodigde binaire bestanden niet kunnen worden gedownload dotnet-symbol
(bijvoorbeeld als een persoonlijke versie van .NET Core die is gebouwd op basis van de bron werd gebruikt), kan het nodig zijn om de hierboven vermelde bestanden te kopiëren uit de omgeving waarin de dump is gemaakt. Als de bestanden zich niet naast het dumpbestand bevinden, kunt u de LLDB/SOS-opdracht setclrpath <path>
gebruiken om het pad in te stellen waaruit ze moeten worden geladen en setsymbolserver -directory <path>
om het pad in te stellen om te zoeken naar symboolbestanden.
Zodra de benodigde bestanden beschikbaar zijn, kan de dump in LLDB worden geladen door de dotnet-host op te geven als het uitvoerbare bestand voor foutopsporing:
lldb --core <dump-file> <host-program>
In de vorige opdracht <dump-file>
is het pad van de dump die moet worden geanalyseerd en <host-program>
is het systeemeigen programma waarmee de .NET Core-toepassing is gestart. Dit is meestal het dotnet
binaire bestand, tenzij de app zelfstandig is. In dat geval is het de naam van de toepassing zonder de .dll-extensie .
Zodra LLDB is gestart, kan het nodig zijn om de setsymbolserver
opdracht te gebruiken om naar de juiste symboollocatie te verwijzen (setsymbolserver -ms
om de symboolserver van Microsoft te gebruiken of setsymbolserver -directory <path>
om een lokaal pad op te geven). Als u systeemeigen symbolen wilt laden, voert u het volgende uit loadsymbols
. Op dit moment kunt u SOS-opdrachten gebruiken om de dump te analyseren.
Notitie
LLDB kan worden geïnstalleerd met de opdracht sudo apt-get install lldb
Dumps analyseren in Windows
Dumps die zijn verzameld van een Linux-computer kunnen ook worden geanalyseerd op een Windows-computer met behulp van Visual Studio, Windbg of het hulpprogramma dotnet-dump . Visual Studio en Windbg kunnen systeemeigen en beheerde code analyseren, terwijl dotnet-dump alleen beheerde code analyseert.
Notitie
Met Visual Studio versie 16.8 en hoger kunt u Linux-dumps openen en analyseren die zijn gegenereerd op .NET Core 3.1.7 of hoger.
- Visual Studio: raadpleeg de handleiding voor foutopsporing voor Visual Studio-dumps.
- Windbg : u kunt fouten opsporen in Linux-dumps op windbg met dezelfde instructies die u zou gebruiken om fouten op te sporen in een Windows-gebruikersmodusdump. Gebruik de x64-versie van windbg voor dumps die zijn verzameld uit een Linux x64- of Arm64-omgeving en de x86-versie voor dumps die zijn verzameld uit een Linux x86-omgeving.
- dotnet-dump : bekijk de dump met behulp van de opdracht dotnet-dump analyze . Gebruik de x64-versie van dotnet-dump voor dumps die zijn verzameld uit een Linux x64- of Arm64-omgeving en de x86-versie voor dumps die zijn verzameld uit een Linux x86-omgeving.
Zie ook
- dotnet-sos voor meer informatie over het installeren van de SOS-extensie.
- dotnet-symbol voor meer informatie over het installeren en gebruiken van het hulpprogramma voor het downloaden van symbolen.
- Diagnostische opslagplaats voor .NET Core voor meer informatie over foutopsporing, inclusief een nuttige veelgestelde vragen.
- LLDB installeren voor instructies over het installeren van LLDB op Linux of Mac.
- Oefenen en problemen met Linux oplossen voor zelfstudie over foutopsporing van crashdumps in Linux