Felsöka Linux-dumpar
Den här artikeln gäller för: ✔️ .NET Core 3.0 SDK och senare versioner
Samla in dumpar i Linux
Dricks
Vanliga frågor och svar om soptippsinsamling, analys och andra varningar finns i Dumpar: Vanliga frågor och svar.
De två rekommenderade sätten att samla in dumpar på Linux är:
dotnet-dump
CLI-verktyg- Miljövariabler som samlar in dumpar vid krascher
Analysera dumpar i Linux
När en dump har samlats in kan den dotnet-dump
analyseras med hjälp av verktyget med dotnet-dump analyze
kommandot . Det här analyssteget måste köras på en dator som har samma arkitektur och Linux-distribution som miljön som dumpen registrerades i.
Verktyget dotnet-dump
stöder visning av information om .NET-kod, men är inte användbart för att förstå kodproblem för andra språk som C och C++.
Alternativt kan LLDB användas för att analysera dumpar i Linux, vilket möjliggör analys av både hanterad och intern kod. LLDB använder SOS-tillägget för att felsöka hanterad kod. dotnet-sos
CLI-verktyget kan användas för att installera SOS, som har många användbara kommandon för felsökning av hanterad kod. För att kunna analysera .NET Core-dumpar kräver LLDB och SOS följande .NET Core-binärfiler från miljön som dumpen skapades i:
- libmscordaccore.so
- libcoreclr.so
- dotnet (värden som används för att starta appen)
I de flesta fall kan dessa binärfiler laddas ned med hjälp av dotnet-symbol
verktyget. Om de nödvändiga binärfilerna inte kan laddas ned med dotnet-symbol
(till exempel om en privat version av .NET Core som skapats från källan användes) kan det vara nödvändigt att kopiera filerna som anges ovan från miljön som dumpen skapades i. Om filerna inte finns bredvid dumpfilen kan du använda KOMMANDOT setclrpath <path>
LLDB/SOS för att ange sökvägen som de ska läsas in från och setsymbolserver -directory <path>
ange sökvägen för att söka efter symbolfiler.
När de nödvändiga filerna är tillgängliga kan dumpen läsas in i LLDB genom att ange dotnet-värden som körbar fil för felsökning:
lldb --core <dump-file> <host-program>
I föregående kommando <dump-file>
är sökvägen till dumpen som ska analyseras och <host-program>
är det interna programmet som startade .NET Core-programmet. Detta är vanligtvis dotnet
binärfilen om inte appen är fristående, i vilket fall det är namnet på programmet utan .dll tillägget.
När LLDB startar kan det vara nödvändigt att använda setsymbolserver
kommandot för att peka på rätt symbolplats (setsymbolserver -ms
för att använda Microsofts symbolserver eller setsymbolserver -directory <path>
för att ange en lokal sökväg). Om du vill läsa in inbyggda symboler kör du loadsymbols
. Nu kan du använda SOS-kommandon för att analysera dumpen.
Kommentar
LLDB kan installeras med kommandot sudo apt-get install lldb
Analysera dumpar i Windows
Dumpar som samlas in från en Linux-dator kan också analyseras på en Windows-dator med hjälp av Visual Studio, Windbg eller verktyget dotnet-dump . Både Visual Studio och Windbg kan analysera intern och hanterad kod, medan dotnet-dump endast analyserar hanterad kod.
Kommentar
Med Visual Studio version 16.8 och senare kan du öppna och analysera Linux-dumpar som genererats på .NET Core 3.1.7 eller senare.
- Visual Studio – Se felsökningsguiden för Visual Studio-dumpar.
- Windbg – Du kan felsöka Linux-dumpar på windbg med samma instruktioner som du skulle använda för att felsöka en windows-dump i användarläge. Använd x64-versionen av windbg för dumpar som samlats in från en Linux x64- eller Arm64-miljö och x86-versionen för dumpar som samlats in från en Linux x86-miljö.
- dotnet-dump – Visa dumpen med hjälp av kommandot dotnet-dump analyze . Använd x64-versionen av dotnet-dump för dumpar som samlats in från en Linux x64- eller Arm64-miljö och x86-versionen för dumpar som samlats in från en Linux x86-miljö.
Se även
- dotnet-sos för mer information om hur du installerar SOS-tillägget.
- dotnet-symbol för mer information om hur du installerar och använder verktyget för symbolnedladdning.
- .NET Core-lagringsplats för diagnostik för mer information om felsökning, inklusive användbara vanliga frågor och svar.
- Installera LLDB för instruktioner om hur du installerar LLDB på Linux eller Mac.
- Öva och felsöka i Linux för självstudie om felsökning av kraschdumpar i Linux