Dela via


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:

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:

  1. libmscordaccore.so
  2. libcoreclr.so
  3. 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