Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln gäller för version ✔️ dotnet-dump 3.0.47001 och senare versioner
Kommentar
dotnet-dump för macOS stöds endast med .NET 5 och senare versioner.
Installera
Det finns två sätt att ladda ned och installera dotnet-dump:
dotnet global tool:
Om du vill installera den senaste versionen av
dotnet-dumpNuGet-paketet använder du installationskommandot för dotnet-verktyget:dotnet tool install --global dotnet-dumpDirekt nedladdning:
Ladda ned det körbara verktyget som matchar din plattform:
Olympiska Spelen (OS) Plattform Windows x86 | x64 | Arm | Arm-x64 Linux x64 | Arm | Arm64 | musl-x64 | musl-Arm64
Kommentar
Om du vill använda dotnet-dump en x86-app behöver du en motsvarande x86-version av verktyget.
Sammanfattning
dotnet-dump [-h|--help] [--version] <command>
beskrivning
Det dotnet-dump globala verktyget är ett sätt att samla in och analysera dumpar i Windows, Linux och macOS utan inbyggt felsökningsprogram. Det här verktyget är viktigt på plattformar som Alpine Linux där en fullt fungerande lldb inte är tillgänglig. Med dotnet-dump verktyget kan du köra SOS-kommandon för att analysera krascher och skräpinsamlaren (GC), men det är inte ett internt felsökningsprogram, så saker som att visa interna stackramar stöds inte.
Alternativ
--versionVisar versionen av verktyget dotnet-dump.
-h|--helpVisar kommandoradshjälp.
Kommandon
| Befallning |
|---|
| dotnet-dump samla in |
| dotnet-dump analysera |
| dotnet-dump ps |
dotnet-dump samla in
Samlar in en dump från en process.
Sammanfattning
dotnet-dump collect [-h|--help] [-p|--process-id] [-n|--name] [--type] [-o|--output] [--diag] [--crashreport]
Alternativ
-h|--helpVisar kommandoradshjälp.
-p|--process-id <PID>Anger det process-ID-nummer som ska samlas in från en dump.
-n|--name <name>Anger namnet på den process som en dump ska samlas in från.
--type <Full|Heap|Mini>Anger dumptypen som avgör vilken typ av information som samlas in från processen. Det finns tre typer:
-
Full– Den största dumpen som innehåller allt minne, inklusive modulbilderna. -
Heap– En stor och relativt omfattande dump som innehåller modullistor, trådlistor, alla staplar, undantagsinformation, hantera information och allt minne förutom mappade bilder. -
Mini– En liten dump som innehåller modullistor, trådlistor, undantagsinformation och alla staplar.
Om det inte anges
Fullär standardvärdet.-
-o|--output <output_dump_path>Den fullständiga sökvägen och filnamnet där den insamlade dumpen ska skrivas. Kontrollera att användaren som dotnet-processen körs under har skrivbehörighet till den angivna katalogen.
Om det inte anges:
- Standardvärdet är .\dump_YYYYMMDD_HHMMSS.dmp i Windows.
- Standardvärdet är ./core_YYYYMMDD_HHMMSS på Linux och macOS.
YYYYMMDD är år/månad/dag och HHMMSS är timme/minut/sekund.
--diagAktiverar diagnostikloggning för dumpsamling.
--crashreportAktiverar generering av kraschrapporter.
Kommentar
I Linux och macOS förväntar sig det här kommandot målprogrammet och dotnet-dump delar samma TMPDIR miljövariabel. Annars överskrider kommandot tidsgränsen.
Kommentar
För att samla in en dump med måste dotnet-dumpden köras som samma användare som användaren som kör målprocessen eller som rot. Annars kan verktyget inte upprätta en anslutning till målprocessen.
Kommentar
Om du samlar in en fullständig dump eller en heapdump kan det leda till att operativsystemet sida vid sida i stort virtuellt minne för målprocessen. Om målprocessen körs i en container med en framtvingad minnesgräns kan den ökade minnesanvändningen leda till att operativsystemet avslutar containern om gränsen har överskridits. Vi rekommenderar att du testar för att säkerställa att minnesgränsen är tillräckligt hög. Ett annat alternativ är att tillfälligt ändra eller ta bort gränsen innan du dumpar samlingen om din miljö stöder detta.
dotnet-dump analysera
Startar ett interaktivt gränssnitt för att utforska en dump. Gränssnittet accepterar olika SOS-kommandon.
Sammanfattning
dotnet-dump analyze <dump_path> [-h|--help] [-c|--command]
Argument
<dump_path>Anger sökvägen till dumpfilen som ska analyseras.
Alternativ
-c|--command <debug_command>Kör kommandot vid start. Flera instanser av den här parametern kan användas i ett anrop till kedjekommandon. Kommandon körs i den ordning som de tillhandahålls på kommandoraden. Om du vill att dotnet-dumpen ska avslutas efter kommandona ska det sista kommandot vara "exit".
Analysera SOS-kommandon
| Befallning | Funktion |
|---|---|
analyzeoom |
Visar information om den senaste OOM som inträffade på en allokeringsbegäran till GC-heapen. |
clrmodules |
Visar en lista över de hanterade modulerna i processen. |
clrstack |
Tillhandahåller endast en stackspårning av hanterad kod. |
clrthreads |
Visar en lista över de hanterade trådar som körs. |
clru |
Visar en kommenterad demontering av en hanterad metod. |
d eller readmemory |
Dumpar minnesinnehåll. |
dbgout |
Aktiverar/inaktiverar (-off) intern SOS-loggning. |
dso |
Visar alla hanterade objekt som finns inom gränserna för den aktuella stacken. |
dumpalc |
Visar information om en samlande sammansättningLoadContext som det angivna objektet läses in till. |
dumparray |
Visar information om en hanterad matris. |
dumpasync |
Visar information om asynkrona tillståndsdatorer på den skräpinsamlade heapen. |
dumpassembly |
Visar information om en sammansättning. |
dumpclass |
Visar information om EEClass strukturen på den angivna adressen. |
dumpconcurrentdictionary |
Visar samtidigt ordlisteinnehåll. |
dumpconcurrentqueue |
Visar innehåll i samtidig kö. |
dumpdelegate |
Visar information om ett ombud. |
dumpdomain |
Visar information om alla sammansättningar i alla AppDomains eller den angivna. |
dumpgcdata |
Visar information om GC-data. |
dumpgen |
Visar heapinnehåll för den angivna generationen. |
dumpheap |
Visar information om den skräpsamlade heapen och insamlingsstatistiken om objekt. |
dumpil |
Visar det gemensamma mellanliggande språket (CIL) som är associerat med en hanterad metod. |
dumplog |
Skriver innehållet i en minnesintern stresslogg till den angivna filen. |
dumpmd |
Visar information om MethodDesc strukturen på den angivna adressen. |
dumpmodule |
Visar information om modulen på den angivna adressen. |
dumpmt |
Visar information om metodtabellen på den angivna adressen. |
dumpobj |
Visar information om objektet på den angivna adressen. |
dumpruntimetypes |
Hittar alla System.RuntimeType-objekt i GC-heapen och skriver ut typnamnet och MethodTable som de också refererar till. |
dumpsig |
Dumpar signaturen för en metod eller ett fält som anges av <sigaddr> <moduleaddr>. |
dumpsigelem |
Dumpar ett enda element i ett signaturobjekt. |
dumpstackobjects |
Visar alla hanterade objekt som finns inom gränserna för den aktuella stacken. |
dumpvc |
Visar information om fälten i en värdeklass. |
eeheap |
Visar information om processminne som förbrukas av interna körningsdatastrukturer. |
eestack |
Körs dumpstack på alla trådar i processen. |
eeversion |
Visar information om körnings- och SOS-versioner. |
ehinfo |
Visar undantagshanteringsblocken i en JIT-ed-metod. |
exit eller quit |
Avslutar interaktivt läge. |
finalizequeue |
Visar alla objekt som registrerats för slutförande. |
findappdomain |
Försöker lösa AppDomain för ett GC-objekt. |
gchandles |
Visar statistik om skräpinsamlingshandtag i processen. |
gcheapstat |
Visar statistik om skräpinsamlare. |
gcinfo |
Visar JIT GC-kodningen för en metod. |
gcroot |
Visar information om referenser (eller rötter) till objektet på den angivna adressen. |
gcwhere |
Visar platsen i GC-heapen för den angivna adressen. |
histclear |
Frigör alla resurser som används av Hist-kommandonas familj. |
histinit |
Initierar SOS-strukturerna från stressloggen som sparats i felsökningsrutan. |
histobj |
Undersöker alla flyttposter för stressloggar och visar kedjan med skräpinsamlingsflyttar som kan ha lett till den adress som skickades som ett argument. |
histobjfind |
Visar alla loggposter som refererar till objektet på den angivna adressen. |
histroot |
Visar information som rör både kampanjer och omlokaliseringar av den angivna roten. |
histstats |
Visar stressloggstatistik. |
ip2md |
MethodDesc Visar strukturen på den angivna adressen i koden som har JIT-kompilerats. |
listnearobj |
Visar objektet som föregår och lyckas med den angivna adressen. |
logopen |
Aktiverar loggning av konsolfiler. |
logclose |
Inaktiverar loggning av konsolfiler. |
logging |
Aktiverar/inaktiverar intern SOS-loggning. |
lm eller modules |
Visar de inbyggda modulerna i processen. |
name2ee |
Visar strukturerna MethodTable och EEClass för den angivna typen eller metoden i den angivna modulen. |
objsize |
Visar storleken på det angivna objektet. |
parallelstacks |
Visar den sammanfogade trådstacken på samma sätt som panelen Parallella staplar i Visual Studio. |
pathto |
Visar GC-sökvägen från <root> till <target>. |
pe eller printexception |
Visar och formaterar fält för alla objekt som härletts från Exception klassen på den angivna adressen. |
r eller registers |
Visar trådens register. |
runtimes |
Visar en lista över körningsvärdena i målet eller ändrar standardkörningen. |
setclrpath |
Anger sökvägen för att läsa in coreclr dac/dbi-filer med hjälp av setclrpath <path>. |
setsymbolserver |
Aktiverar symbolserverns stöd. |
sos |
Kör olika coreclr-felsökningskommandon. Använd syntaxen sos <command-name> <args>. Mer information finns i "soshelp". |
soshelp eller help |
Visar alla tillgängliga kommandon. |
soshelp <command> eller help <command> |
Visar det angivna kommandot. |
syncblk |
Visar info om SyncBlock-innehavare. |
taskstate |
Visar ett uppgiftstillstånd i ett läsbart format för människor. |
threadpool |
Visar information om körningstrådspoolen. |
threadpoolqueue |
Visar arbetsobjekt för i köade trådpooler. |
threadstate |
Skriver ut innebörden av ett trådtillstånd. |
threads <threadid> eller setthread <threadid> |
Anger eller visar aktuellt tråd-ID för SOS-kommandona. |
timerinfo |
Visar information om körningstimers. |
token2ee |
Visar MethodTable-strukturen och MethodDesc-strukturen för den angivna token och modulen. |
traverseheap |
Skriver ut heap-information till en fil i ett format som förstås av CLR Profiler. |
verifyheap |
Kontrollerar GC-heapen efter tecken på skada. |
verifyobj |
Kontrollerar objektet som skickas som ett argument för tecken på skada. |
Kommentar
Ytterligare information finns i SOS-felsökningstillägget för .NET.
dotnet-dump ps
Visar en lista över de dotnet-processer som dumpar kan samlas in från.
dotnet-dump Version 6.0.320703 och senare versioner visar även de kommandoradsargument som varje process startades med, om den är tillgänglig.
Sammanfattning
dotnet-dump ps [-h|--help]
Exempel
Anta att du startar en tidskrävande app med kommandot dotnet run --configuration Release. I ett annat fönster kör dotnet-dump ps du kommandot . Utdata visas på följande sätt. Eventuella kommandoradsargument visas i dotnet-dump version 6.0.320703 och senare.
> dotnet-dump ps
21932 dotnet C:\Program Files\dotnet\dotnet.exe run --configuration Release
36656 dotnet C:\Program Files\dotnet\dotnet.exe
Använda dotnet-dump
Det första steget är att samla in en dump. Det här steget kan hoppas över om en kärndump redan har genererats. Operativsystemet eller .NET Core-körningens inbyggda dumpgenereringsfunktion kan var och en skapa kärndumpar.
$ dotnet-dump collect --process-id 1902
Writing minidump to file ./core_20190226_135837
Written 98983936 bytes (24166 pages) to core file
Complete
Analysera nu kärndumpningen analyze med kommandot :
$ dotnet-dump analyze ./core_20190226_135850
Loading core dump: ./core_20190226_135850
Ready to process analysis commands. Type 'help' to list available commands or 'help [command]' to get detailed help on a command.
Type 'quit' or 'exit' to exit the session.
>
Den här åtgärden ger en interaktiv session som accepterar kommandon som:
> clrstack
OS Thread Id: 0x573d (0)
Child SP IP Call Site
00007FFD28B42C58 00007fb22c1a8ed9 [HelperMethodFrame_PROTECTOBJ: 00007ffd28b42c58] System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean, Boolean)
00007FFD28B42DD0 00007FB1B1334F67 System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo) [/root/coreclr/src/mscorlib/src/System/Reflection/RuntimeMethodInfo.cs @ 472]
00007FFD28B42E20 00007FB1B18D33ED SymbolTestApp.Program.Foo4(System.String) [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 54]
00007FFD28B42ED0 00007FB1B18D2FC4 SymbolTestApp.Program.Foo2(Int32, System.String) [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 29]
00007FFD28B42F00 00007FB1B18D2F5A SymbolTestApp.Program.Foo1(Int32, System.String) [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 24]
00007FFD28B42F30 00007FB1B18D168E SymbolTestApp.Program.Main(System.String[]) [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 19]
00007FFD28B43210 00007fb22aa9cedf [GCFrame: 00007ffd28b43210]
00007FFD28B43610 00007fb22aa9cedf [GCFrame: 00007ffd28b43610]
Så här ser du ett ohanterat undantag som dödade din app:
> pe -lines
Exception object: 00007fb18c038590
Exception type: System.Reflection.TargetInvocationException
Message: Exception has been thrown by the target of an invocation.
InnerException: System.Exception, Use !PrintException 00007FB18C038368 to see more.
StackTrace (generated):
SP IP Function
00007FFD28B42DD0 0000000000000000 System.Private.CoreLib.dll!System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean, Boolean)
00007FFD28B42DD0 00007FB1B1334F67 System.Private.CoreLib.dll!System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)+0xa7 [/root/coreclr/src/mscorlib/src/System/Reflection/RuntimeMethodInfo.cs @ 472]
00007FFD28B42E20 00007FB1B18D33ED SymbolTestApp.dll!SymbolTestApp.Program.Foo4(System.String)+0x15d [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 54]
00007FFD28B42ED0 00007FB1B18D2FC4 SymbolTestApp.dll!SymbolTestApp.Program.Foo2(Int32, System.String)+0x34 [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 29]
00007FFD28B42F00 00007FB1B18D2F5A SymbolTestApp.dll!SymbolTestApp.Program.Foo1(Int32, System.String)+0x3a [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 24]
00007FFD28B42F30 00007FB1B18D168E SymbolTestApp.dll!SymbolTestApp.Program.Main(System.String[])+0x6e [/home/mikem/builds/SymbolTestApp/SymbolTestApp/SymbolTestApp.cs @ 19]
StackTraceString: <none>
HResult: 80131604
Felsöka problem med dumpinsamling
Dumpinsamling kräver att processen kan anropa ptrace. Om du har problem med att samla in dumpar kan den miljö som du kör på konfigureras för att begränsa sådana anrop. Se våra dumpar: Vanliga frågor och svar om felsökningstips och potentiella lösningar på vanliga problem.