SOS-felsökningstillägg
Med SOS-felsökningstillägget kan du visa information om kod som körs i .NET-körningen, både på aktiva processer och dumpar. Tillägget är förinstallerat med dotnet-dump och Windbg/dbg och kan laddas ned för användning med LLDB. Du kan använda SOS-felsökningstillägget för att:
- Samla in information om den hanterade heapen.
- Leta efter heap korruption.
- Visa interna datatyper som används av körningen.
- Visa information om all hanterad kod som körs i körningen.
Syntax
I Windows: ![command] [options]
I Linux och macOS: sos [command] [options]
Många av kommandona har alias eller genvägar under lldb: clrstack [options]
Kommandon
Följande tabell med kommandon finns också under Hjälp eller hjälp. Hjälp med enskilda kommandon är tillgänglig med hjälp av soshelp <command>
.
Kommando | beskrivning |
---|---|
bpmd [-nofuturemodule] [<module name<>method name>] [-md><MethodDesc ] -list -clear<pending breakpoint number-clearall> |
Skapar en brytpunkt med den angivna metoden i den angivna modulen. Om den angivna modulen och metoden inte har lästs in väntar det här kommandot på ett meddelande om att modulen har lästs in och JIT (just-in-time) kompilerats innan du skapar en brytpunkt. Du kan hantera listan över väntande brytpunkter med alternativen -list, -clear och -clear: Alternativet -list genererar en lista över alla väntande brytpunkter. Om en väntande brytpunkt har ett modul-ID som inte är noll är den brytpunkten specifik för en funktion i den specifika inlästa modulen. Om den väntande brytpunkten har ett modul-ID med noll gäller den brytpunkten för moduler som ännu inte har lästs in. Använd alternativet -clear eller -clearall för att ta bort väntande brytpunkter från listan. |
CLRStack [-a] [-l] [-p] [-n] [-f] [-r] [-all] | Tillhandahåller endast en stackspårning av hanterad kod. Alternativet -p visar argument för den hanterade funktionen. Alternativet -l visar information om lokala variabler i en ram. SOS-felsökningstillägget kan inte hämta lokala namn, så utdata för lokala namn är i formatet <lokalt adressvärde=><>. Alternativet -a är en genväg för -l och -p kombinerat. Alternativet -n inaktiverar visning av källfilnamn och radnummer. Om felsökningsprogrammet har alternativet SYMOPT_LOAD_LINES angivet letar SOS upp symbolerna för varje hanterad ram och om det lyckas visas motsvarande källfilnamn och radnummer. Parametern -n (Inga radnummer) kan anges för att inaktivera det här beteendet. Alternativet -f (fullständigt läge) visar de inbyggda ramarna som blandas med de hanterade ramarna och sammansättningsnamnet och funktionsförskjutningen för de hanterade ramarna. Det här alternativet visar inte inbyggda ramar när det används med dotnet-dump .Alternativet -r dumpar registren för varje stackram. Alternativet -all dumpar alla hanterade trådars staplar. |
COMState | Visar com-lägenhetsmodellen för varje tråd och en Context pekare, om den är tillgänglig. Det här kommandot stöds endast i Windows. |
DumpArray [-start<startIndex>] [längd<]> [-details] [-nofields] <matrisobjektadress> -eller- DA [-start<startIndex>] [längd<]> [-details] [-nofields] matrisobjektadress> |
Undersöker element i ett matrisobjekt. Alternativet -start anger det startindex där element ska visas. Alternativet -length anger hur många element som ska visas. Alternativet -details visar information om elementet med hjälp av DumpObj - och DumpVC-format . Alternativet -nofields förhindrar att matriser visas. Det här alternativet är endast tillgängligt när alternativet -details har angetts. |
DumpAsync (dumpasync) [-mt<MethodTable address>] [-type<partial type name>] [-waiting] [-roots] | DumpAsync passerar skräpinsamlingens heap och letar efter objekt som representerar asynkrona tillståndsdatorer som skapats när en asynkron metods tillstånd överförs till heapen. Det här kommandot identifierar asynkrona tillståndsdatorer som definierats som async void , async Task , async Task<T> , async ValueTask och async ValueTask<T> .Utdata innehåller ett informationsblock för varje asynkront tillståndsdatorobjekt som hittas. I den här informationen ingår bland annat följande: – En rad för typen av asynkront tillståndsdatorobjekt, inklusive dess MethodTable-adress, dess objektadress, dess storlek och dess typnamn. – En rad för namnet på tillståndsdatorns typ som finns i objektet. – En lista över varje fält på tillståndsdatorn. – En rad för en fortsättning från det här tillståndsdatorobjektet, om en eller flera har registrerats. – Identifierade GC-rötter för det här asynkrona tillståndsdatorobjektet. |
Sammansättningsadress för DumpAssembly<> | Visar information om en sammansättning. DumpAssembly-kommandot visar flera moduler, om de finns. Du kan hämta en sammansättningsadress med hjälp av kommandot DumpDomain . |
DumpClass<EEClass-adress> | Visar information om strukturen som EEClass är associerad med en typ.Kommandot DumpClass visar statiska fältvärden men visar inte icke-statiska fältvärden. Använd kommandot DumpMT, DumpObj, Name2EE eller Token2EE för att hämta en EEClass strukturadress. |
DumpDomain [<domänadress>] | Räknar upp varje Assembly objekt som läses in i den angivna AppDomain objektadressen. När kommandot DumpDomain anropas utan parametrar visas alla AppDomain objekt i en process. Eftersom .NET (Core) bara har ett AppDomainreturnerar DumpDomain bara ett objekt. |
DumpHeap [-stat] [-strings] [-short] [-min<size>] [-max<size>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable address>] [-type<partial type name>] [start [end]] | Visar information om skräpinsamlingens heap- och insamlingsstatistik om objekt. DumpHeap-kommandot visar en varning om den upptäcker överdriven fragmentering i skräpinsamlarens heap. Alternativet -stat begränsar utdata till sammanfattningen av statistisk typ. Alternativet -strings begränsar utdata till en sammanfattning av ett statistiskt strängvärde. Alternativet -short begränsar utdata till bara adressen för varje objekt. På så sätt kan du enkelt skicka utdata från kommandot till ett annat felsökningskommando för automatisering. Alternativet -min ignorerar objekt som är mindre än parametern size , som anges i byte.Alternativet -max ignorerar objekt som är större än parametern size , som anges i byte.Alternativet -thinlock rapporterar ThinLocks. Mer information finns i kommandot SyncBlk . Alternativet -startAtLowerBound tvingar heap-promenaden att börja vid den nedre gränsen för ett angivet adressintervall. Under planeringsfasen är heapen ofta inte gångbar eftersom objekt flyttas. Det här alternativet tvingar DumpHeap att påbörja sin promenad på den angivna nedre gränsen. Du måste ange adressen för ett giltigt objekt som den nedre gränsen för att det här alternativet ska fungera. Du kan visa minne på adressen till ett felaktigt objekt för att manuellt hitta nästa metodtabell. Om skräpinsamlingen för närvarande är i ett anrop till memcopy kan du också hitta adressen till nästa objekt genom att lägga till storleken i startadressen, som anges som en parameter.Alternativet -mt visar endast de objekt som motsvarar den angivna MethodTable strukturen.Alternativet -type visar endast de objekt vars typnamn är en delsträngsmatchning av den angivna strängen. Parametern start börjar lista från den angivna adressen.Parametern end slutar att visas på den angivna adressen. |
DumpIL<Managed DynamicMethod-objekt | <>DynamicMethodDesc-pekare> | <MethodDesc-pekare> | Visar det gemensamma mellanliggande språket (CIL) som är associerat med en hanterad metod. Dynamisk CIL genereras på ett annat sätt än CIL som läses in från en sammansättning. Dynamisk CIL refererar till objekt i en hanterad objektmatris i stället för metadatatoken. |
DumpLog [-addr<addressOfStressLog>] [<Filnamn>] | Skriver innehållet i en minnesintern stresslogg till den angivna filen. Om du inte anger något namn skapar det här kommandot en fil med namnet StressLog.txt i den aktuella katalogen. Minnesintern stresslogg hjälper dig att diagnostisera stressfel utan att använda lås eller I/O. Om du vill aktivera stressloggen anger du följande registernycklar under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. NETFramework: (DWORD) StressLog = 1 (DWORD) LogFacility = 0xffffffff (DWORD) StressLogSize = 65536 Med det valfria -addr alternativet kan du ange en annan stresslogg än standardloggen. |
DumpMD<MethodDesc-adress> | Visar information om en MethodDesc struktur på den angivna adressen.Du kan använda IP2MD-kommandot för att hämta strukturadressen MethodDesc från en hanterad funktion. |
DumpMT [-MD] <MethodTable-adress> | Visar information om en metodtabell på den angivna adressen. Om du anger alternativet -MD visas en lista över alla metoder som definierats med objektet. Varje hanterat objekt innehåller en metodtabellpekare. |
DumpModule [-mt] <Moduladress> | Visar information om en modul på den angivna adressen. Alternativet -mt visar de typer som definierats i en modul och de typer som refereras av modulen Du kan använda kommandot DumpDomain eller DumpAssembly för att hämta en moduls adress. |
DumpObj -objektadressen [-nofields] <> -eller- DO-objektadress<> |
Visar information om ett objekt på den angivna adressen. Kommandot DumpObj visar fälten, strukturinformationen EEClass , metodtabellen och objektets storlek.Du kan använda kommandot DumpStackObjects för att hämta ett objekts adress. Du kan köra DumpObj-kommandot på fält av typen CLASS eftersom de också är objekt.Alternativet - nofields förhindrar att fält i objektet visas, det är användbart för objekt som String. |
DumpRuntimeTypes | Visar körningstypobjekten i skräpinsamlarens heap och visar deras associerade typnamn och metodtabeller. |
DumpStack [-EE] [-n] [top stack [bottom stack]] |
Visar en stackspårning. Alternativet -EE gör att DumpStack-kommandot endast visar hanterade funktioner. Använd parametrarna top och bottom för att begränsa de stackramar som visas på x86-plattformar.Alternativet -n inaktiverar visning av källfilnamn och radnummer. Om felsökningsprogrammet har alternativet SYMOPT_LOAD_LINES angivet letar SOS upp symbolerna för varje hanterad ram och om det lyckas visas motsvarande källfilnamn och radnummer. Parametern -n (Inga radnummer) kan anges för att inaktivera det här beteendet. |
DumpSig sigaddr<>moduleaddr<> | Visar information om en Sig struktur på den angivna adressen. |
DumpSigElem sigaddr<>moduleaddr<> | Visar ett enda element i ett signaturobjekt. I de flesta fall bör du använda DumpSig för att titta på enskilda signaturobjekt. Men om en signatur har skadats på något sätt kan du använda DumpSigElem för att läsa de giltiga delarna av den. |
DumpStackObjects [-verify] [top stack [bottom stack]]-eller- DSO [-verify] [ top stack [bottom stack]] |
Visar alla hanterade objekt som finns inom gränserna för den aktuella stacken. Alternativet -verify verifierar varje icke-statiskt CLASS fält i ett objektfält.Använd kommandot DumpStackObject med stackspårningskommandon som K (windbg) eller bt (lldb) tillsammans med kommandot clrstack för att fastställa värdena för lokala variabler och parametrar. |
DumpVC<MethodTable-adressadress><> | Visar information om fälten i en värdeklass på den angivna adressen. Parametern MethodTable gör att DumpVC-kommandot kan tolka fält korrekt. Värdeklasser har ingen metodtabell som sitt första fält. |
EEHeap [-gc] [-loader] | Visar information om processminne som förbrukas av interna körningsdatastrukturer. Alternativen -gc och -loader begränsar utdata från det här kommandot till skräpinsamlings- eller inläsningsdatastrukturer. Informationen för skräpinsamlaren visar intervallen för varje segment i den hanterade heapen. Om pekaren faller inom ett segmentintervall som anges av -gc är pekaren en objektpekare. |
EEStack [-short] [-EE] | Kör DumpStack-kommandot på alla trådar i processen. Alternativet -EE skickas direkt till DumpStack-kommandot . Parametern -short begränsar utdata till följande typer av trådar: Trådar som har tagit ett lås. Trådar som har stoppats för att tillåta en skräpinsamling. Trådar som för närvarande finns i hanterad kod. |
EHInfo [<MethodDesc-adress>] [<Kodadress>] | Visar undantagshanteringsblocken i en angiven metod. Det här kommandot visar kodadresserna och förskjutningarna för satsblocket try (blocket) och hanteringsblocket catch (blocket). |
Vanliga frågor och svar | Visar vanliga frågor och svar. Stöds inte i dotnet-dump . |
FinalizeQueue [-detail] | [-allReady] [-short] | Visar alla objekt som registrerats för slutförande. Alternativet -detail visar extra information om alla SyncBlocks som behöver rensas och alla RuntimeCallableWrappers (RCW:er) som väntar på rensning. Båda dessa datastrukturer cachelagras och rensas av slutklienttråden när den körs.Alternativet -allReady visar alla objekt som är redo för slutförande, oavsett om de redan har markerats av skräpinsamlingen som sådana eller kommer att markeras av nästa skräpinsamling. De objekt som finns i listan "redo för slutförande" är slutgiltiga objekt som inte längre är rotade. Det här alternativet kan vara mycket dyrt eftersom det verifierar om alla objekt i de slutgiltiga köerna fortfarande är rotade.Alternativet -short begränsar utdata till adressen för varje objekt. Om den används tillsammans med -allReady räknas alla objekt som har en finalizer som inte längre är rotade upp. Om den används separat visas alla objekt i köerna finalizable och "ready for finalization". |
FindAppDomain-objektadress<> | Avgör programdomänen för ett objekt på den angivna adressen. |
FindRoots -gen<N> | -gen any |<objektadress> | Gör att felsökaren bryts i felsökningsrutan i nästa samling av den angivna generationen. Effekten återställs så snart pausen inträffar. Om du vill bryta nästa samling måste du återaktiva kommandot. Objektadressformen för det här kommandot används efter att den brytpunkt som orsakas av -gen eller -gen har inträffat.<> Vid den tidpunkten är felsökningsgeen i rätt tillstånd för FindRoots att identifiera rötter för objekt från de aktuella dömda generationerna. Stöds endast i Windows. |
GCHandles [-perdomain] | Visar statistik om skräpinsamlingshandtag i processen. Alternativet -perdomain ordnar statistiken efter programdomän. Använd GCHandles-kommandot för att hitta minnesläckor som orsakas av skräpinsamlarens handtagsläckor. Till exempel uppstår en minnesläcka när koden behåller en stor matris eftersom ett starkt skräpinsamlarhandtag fortfarande pekar på den och handtaget ignoreras utan att frigöra den. Stöds endast i Windows. |
GCHandleLeaks | Söker i minnet efter referenser till starka och fästa skräpinsamlarehandtag i processen och visar resultatet. Om ett handtag hittas visar GCHandleLeaks-kommandot referensens adress. Om ett handtag inte hittas i minnet visas ett meddelande i det här kommandot. Stöds endast i Windows. |
GCInfo<MethodDesc-adressKodadress><> | Visar data som anger när register eller stackplatser innehåller hanterade objekt. Om en skräpinsamling inträffar måste insamlaren känna till platserna för referenser till objekt så att den kan uppdatera dem med nya objektpekarvärden. |
GCRoot [-nostacks] [-all] <Objektadress> | Visar information om referenser (eller rötter) till ett objekt på den angivna adressen. GCRoot-kommandot undersöker hela den hanterade heapen och referenstabellen för referenser i andra objekt och handtag i stacken. Varje stack söks sedan efter pekare till objekt, och finalizer-kön genomsöks också. Det här kommandot avgör inte om en stackrot är giltig eller tas bort. Använd kommandona clrstack och U för att demontera den ram som det lokala värdet eller argumentvärdet tillhör för att avgöra om stackroten fortfarande används. Alternativet -nostacks begränsar sökningen till skräpinsamlingshandtag och nåbara objekt. Alternativet -all tvingar alla rötter att visas i stället för bara de unika rötterna. |
GCWhere-objektadress< > | Visar platsen och storleken i skräpinsamlingshögen för argumentet som skickades in. När argumentet ligger i den hanterade heapen men inte är en giltig objektadress visas storleken som 0 (noll). |
Hjälp (soshelp) [<kommando>] [faq ] |
Visar alla tillgängliga kommandon när ingen parameter har angetts eller visar detaljerad hjälpinformation om det angivna kommandot. Parametern faq visar svar på vanliga frågor och svar. |
HeapStat [-inclUnrooted-iu | ] | Visar generationsstorlekarna för varje heap och det totala lediga utrymmet i varje generation på varje heap. Om alternativet -inclUnrooted anges innehåller rapporten information om de hanterade objekten från skräpinsamlingens heap som inte längre är rotad. Stöds endast i Windows. |
HistClear | Frigör alla resurser som används av kommandofamiljen Hist .I allmänhet behöver du inte uttryckligen anropa HistClear , eftersom var och en HistInit rensar de tidigare resurserna. |
HistInit | Initierar SOS-strukturerna från stressloggen som sparats i felsökningsrutan. |
HistObj <obj_address> | 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 <obj_address> | Visar alla loggposter som refererar till ett objekt på den angivna adressen. |
HistRoot-rot <> | Visar information som rör både kampanjer och omlokaliseringar av den angivna roten. Rotvärdet kan användas för att spåra förflyttningen av ett objekt via skräpsamlingarna. |
IP2MD-kodadress (ip2md) <> | MethodDesc Visar strukturen på den angivna adressen i koden som har JIT-kompilerats. |
ListNearObj (lno) <obj_address> | Visar objekten före och efter den angivna adressen. Kommandot söker efter adressen i skräpinsamlings-heapen som ser ut som en giltig början av ett hanterat objekt (baserat på en giltig metodtabell) och objektet som följer argumentadressen. Stöds endast i Windows. |
MinidumpMode [0] [1] | Förhindrar att du kör osäkra kommandon när du använder en minidump. Skicka 0 för att inaktivera den här funktionen eller 1 för att aktivera den här funktionen. Som standard är värdet MinidumpMode inställt på 0. Minidumps som skapats med kommandot .dump /m eller .dump har begränsade CLR-specifika data och gör att du bara kan köra en delmängd av SOS-kommandon korrekt. Vissa kommandon kan misslyckas med oväntade fel eftersom nödvändiga minnesområden inte mappas eller endast delvis mappas. Det här alternativet skyddar dig från att köra osäkra kommandon mot minidämpar. Stöds endast med Windbg. |
Namn2EE (name2ee) <modulnamnstyp<>eller metodnamn> -eller- Namn 2EE-modulnamn!<<>typ- eller metodnamn> |
MethodTable Visar strukturen och EEClass strukturen för den angivna typen eller metoden i den angivna modulen.Den angivna modulen måste läsas in i processen. Om du vill hämta rätt typnamn bläddrar du i modulen med hjälp av Ildasm.exe (IL Disassembler). Du kan också skicka * som parameter för modulnamn för att söka i alla inlästa hanterade moduler. Parametern för modulnamn kan också vara felsökarens namn för en modul, till exempel mscorlib eller image00400000 .Det här kommandot stöder Windows-felsökningssyntaxen för << module >>! type . Typen måste vara fullständigt kvalificerad. |
ObjSize [<Objektadress>] | [-aggregate] [-stat] | Visar storleken på det angivna objektet. Om du inte anger några parametrar visar ObjSize-kommandot storleken på alla objekt som finns i hanterade trådar, visar alla skräpinsamlarehandtag i processen och summerar storleken på alla objekt som pekas på av dessa referenser. ObjSize-kommandot innehåller storleken på alla underordnade objekt utöver det överordnade objektet. Alternativet -aggregate kan användas tillsammans med argumentet -stat för att få en detaljerad vy över de typer som fortfarande är rotade. Med hjälp av !dumpheap -stat och !objsize -aggregate -stat kan du avgöra vilka objekt som inte längre är rotade och diagnostisera olika minnesproblem. Stöds endast i Windows. |
PrintException [kapslad] [-rader] [<Undantagsobjektadress>] -eller- PE [kapslad] [<Undantagsobjektadress>] |
Visar och formaterar fält för alla objekt som härletts från Exception klassen på den angivna adressen. Om du inte anger någon adress visar kommandot PrintException det senaste undantaget som utlöstes i den aktuella tråden. Det kapslade alternativet visar information om kapslade undantagsobjekt. Alternativet -lines visar källinformation, om det är tillgängligt. Du kan använda det här kommandot för att formatera och visa fältet _stackTrace , som är en binär matris. |
ProcInfo [-env] [-time] [-mem] | Visar miljövariabler för processen, cpu-tid för kernel och minnesanvändningsstatistik. Stöds endast med Windbg. |
RCWCleanupList<RCWCleanupList-adress> | Visar listan över anropsbara omslutningar för körning på den angivna adress som väntar på rensning. Stöds endast med Windbg. |
SparaModule-basadress><<Filnamn> | Skriver en bild, som läses in i minnet på den angivna adressen, till den angivna filen. Stöds endast med Windbg. |
SetHostRuntime [<runtime-directory>] | Det här kommandot anger sökvägen till .NET-körningen som ska användas som värd för den hanterade kod som körs som en del av SOS i felsökningsprogrammet (lldb). Körningen måste vara minst version 2.1.0 eller senare. Om det finns blanksteg i katalogen måste den vara enkel citerad ('). Normalt försöker SOS hitta en installerad .NET-körning för att köra den hanterade koden automatiskt, men det här kommandot är tillgängligt om det misslyckas. Standardvärdet är att använda samma körning (libcoreclr) som debugged. Använd det här kommandot om standardkörningen som debuggas inte fungerar tillräckligt för att köra SOS-koden eller om versionen är mindre än 2.1.0. Om du fick följande felmeddelande när du körde ett SOS-kommando använder du det här kommandot för att ange sökvägen till 2.1.0 eller senare .NET-körning. (lldb) clrstack Error: Fail to initialize CoreCLR 80004005 ClrStack failed (lldb) sethostruntime /usr/share/dotnet/shared/Microsoft.NETCore.App/2.1.6 Du kan använda "dotnet --info" i ett kommandogränssnitt för att hitta sökvägen till en installerad .NET-körning. |
SetSymbolServer [-ms] [-disable] [-log] [-loadsymbols] [-cache<cache-path>] [-directory<search-directory>] [-sympath<windows-symbol-path>] [<symbol-server-URL>] | Aktiverar stöd för nedladdning av symbolservern. Alternativet -ms aktiverar nedladdning från den offentliga Microsoft-symbolservern. Alternativet -disable aktiverar stöd för symbolnedladdning. Alternativet -cache-path<> anger en symbolcachekatalog. Standardvärdet är $HOME/.dotnet/symbolcache om det inte anges. Alternativet -directory lägger till en sökväg för att söka efter symboler. Kan vara mer än en. Alternativet -sympath lägger till server-, cache- och katalogsökvägar i Windows-symbolsökvägsformatet. Alternativet -log aktiverar loggning av symbolnedladdning. Alternativet -loadsymbols försöker ladda ned de interna .NET-symbolerna för körningen. Stöds på lldb och dotnet-dump. |
SOSFlush | Rensar en intern SOS-cache. |
SOSStatus [-reset] | Visar intern SOS-status eller återställer det interna cachelagrade tillståndet. |
StopOnException [-derived] [-create-create2 | ] <Exception><Pseudo-register number> | Gör att felsökningsprogrammet stoppas när det angivna undantaget utlöses, men fortsätter att köras när andra undantag utlöses. Alternativet -derived fångar det angivna undantaget och varje undantag som härleds från det angivna undantaget. Stöds endast med Windbg. |
SyncBlk [-all | <syncblk-nummer>] | Visar den angivna SyncBlock strukturen eller alla SyncBlock strukturer. Om du inte skickar några argument visar SyncBlk-kommandot den SyncBlock struktur som motsvarar objekt som ägs av en tråd.En SyncBlock struktur är en container för extra information som inte behöver skapas för varje objekt. Den kan innehålla COM-interopdata, hashkoder och låsinformation för trådsäkra åtgärder. |
ThreadPool | Visar information om den hanterade trådpoolen, inklusive antalet arbetsbegäranden i kön, antalet porttrådar för slutförande och antalet timers. |
Trådar (clrthreads) [-live] [-special] | Visar alla hanterade trådar i processen. Kommandot Trådar visar felsökningsprogrammets korthands-ID , CLR-tråd-ID och operativsystemets tråd-ID. Dessutom visar kommandot Trådar en domänkolumn som anger programdomänen där en tråd körs, en APT-kolumn som visar COM-lägenhetsläget och en undantagskolumn som visar det senaste undantaget som utlöstes i tråden. Alternativet -live visar trådar som är associerade med en live-tråd. Alternativet -special visar alla specialtrådar som skapats av CLR. Särskilda trådar inkluderar skräpinsamlingstrådar (i samtidig och server skräpinsamling), felsökningshjälptrådar, finalizertrådar, AppDomain lossningstrådar och trådpoolstimertrådar. |
Fältet ThreadState < State-värde > | Visar trådens tillstånd. Parametern value är värdet för State fältet i threads-rapportens utdata. |
Token2EE-modulens namntoken><<> | Omvandlar den angivna metadatatoken i den angivna modulen till en MethodTable struktur eller MethodDesc struktur.Du kan skicka * för parametern modulnamn för att hitta vad den token mappar till i varje inläst hanterad modul. Du kan också skicka felsökarens namn för en modul, till exempel mscorlib eller image00400000 . |
U [-gcinfo] [-ehinfo] [-n] <MethodDesc-adress | <>Kodadress> | Visar en kommenterad demontering av en hanterad metod som anges antingen av en MethodDesc strukturpekare för metoden eller av en kodadress i metodtexten. U-kommandot visar hela metoden från början till slut, med anteckningar som konverterar metadatatoken till namn.Alternativet -gcinfo gör att U-kommandot visar GCInfo metodens struktur.Alternativet -ehinfo visar undantagsinformation för metoden. Du kan också hämta den här informationen med EHInfo-kommandot . Alternativet -n inaktiverar visning av källfilnamn och radnummer. Om felsökaren har alternativet SYMOPT_LOAD_LINES angivet letar SOS upp symbolerna för varje hanterad ram och visar, om det lyckas, motsvarande källfilnamn och radnummer. Du kan ange alternativet -n för att inaktivera det här beteendet. |
VerifyHeap | Kontrollerar skräpinsamlingshögen efter tecken på skada och visar eventuella fel som hittas. Heap-skador kan orsakas av att plattform anropar anrop som har konstruerats felaktigt. |
VerifyObj-objektadress<> | Kontrollerar objektet som skickas som ett argument för tecken på skada. Stöds endast i Windows. |
VMMap | Passerar det virtuella adressutrymmet och visar vilken typ av skydd som tillämpas på varje region. Stöds endast med Windbg. |
VMStat | Ger en sammanfattning av det virtuella adressutrymmet, ordnat efter varje typ av skydd som tillämpas på det minnet (ledigt, reserverat, bekräftat, privat, mappat, bild). Kolumnen TOTAL visar resultatet av kolumnen AVERAGE multiplicerat med kolumnen BLK COUNT. Stöds endast med Windbg. |
Dotnet-Dump
En lista över tillgängliga SOS-kommandon med dotnet-dump analyze
finns i dotnet-dump.
Windows-felsökningsprogram
Du kan också använda SOS-felsökningstillägget genom att läsa in det i felsökningsprogrammet WinDbg/dbg och köra kommandon i Windows-felsökningsprogrammet. SOS-kommandon kan användas i aktiva processer eller dumpar.
Windbg bör läsa in SOS-tillägget automatiskt när processen som debuggas innehåller .NET-körningen (coreclr.dll eller libcoreclr.so).
LLDB-felsökningsprogram
Anvisningar om hur du konfigurerar SOS för LLDB finns i dotnet-sos. SOS-kommandon kan användas i aktiva processer eller dumpar.
Som standard kan du nå alla SOS-kommandon genom att ange: sos [command_name]
. De vanliga kommandona har dock aliaserats så att du inte behöver prefixet sos
:
Command | Funktion |
---|---|
analyzeoom |
Visar information om den senaste OOM som inträffade på en allokeringsbegäran till GC-heapen. |
bpmd |
Skapar en brytpunkt på den angivna hanterade metoden i den angivna modulen. |
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. |
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. |
dumpstack |
Visar en intern och hanterad stackspårning. |
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. |
finalizequeue |
Visar alla objekt som registrerats för slutförande. |
findappdomain |
Försöker lösa AppDomain för ett GC-objekt. |
findroots |
Söker efter och visar objektrötter i GC-samlingar. |
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. |
loadsymbols |
Läser in de inbyggda .NET-modulsymbolerna. |
logging |
Aktiverar/inaktiverar intern SOS-loggning. |
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 |
Visar och formaterar fält för alla objekt som härletts från Exception klassen på den angivna adressen. |
printexception |
Visar och formaterar fält för alla objekt som härletts från Exception klassen på den angivna adressen. |
runtimes |
Visar en lista över körningarna i målet eller ändrar standardkörningen. |
stoponcatch |
Målprocessen bryter nästa gång ett hanterat undantag fångas under körningen. |
setclrpath |
Anger sökvägen för att läsa in coreclr dac/dbi-filer. setclrpath <path> . |
sethostruntime |
Anger eller visar .NET-körningskatalogen som ska användas för att köra hanterad kod i SOS. |
setsymbolserver |
Aktiverar symbolserverns stöd. |
setsostid |
Anger det aktuella tid/trådindexet för operativsystemet i stället för att använda den lldb som finns. setsostid <tid> <index> . |
sos |
Kör olika coreclr-felsökningskommandon. Använd syntaxen sos <command-name> <args> . Mer information finns i "soshelp". |
soshelp |
Visar alla tillgängliga kommandon när ingen parameter har angetts eller visar detaljerad hjälpinformation om det angivna kommandot: soshelp <command> . |
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. |
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. |
Windbg/cdb-exempelanvändning
Kommando | beskrivning |
---|---|
!dumparray -start 2 -length 5 -details 00ad28d0 |
Visar innehållet i en matris på adressen 00ad28d0 . Visningen startar från det andra elementet och fortsätter för fem element. |
!dumpassembly 1ca248 |
Visar innehållet i en sammansättning på adressen 1ca248 . |
!dumpheap |
Visar information om skräpinsamlingshögen. |
!DumpLog |
Skriver innehållet i minnesintern stresslogg till en (standard) fil med namnet StressLog.txt i den aktuella katalogen. |
!dumpmd 902f40 |
MethodDesc Visar strukturen på adressen 902f40 . |
!dumpmodule 1caa50 |
Visar information om en modul på adressen 1caa50 . |
!DumpObj a79d40 |
Visar information om ett objekt på adressen a79d40 . |
!DumpVC 0090320c 00a79d9c |
Visar fälten för en värdeklass på adressen 00a79d9c med hjälp av metodtabellen på adressen 0090320c . |
!eeheap -Gc |
Visar det processminne som används av skräpinsamlaren. |
!finalizequeue |
Visar alla objekt som är schemalagda för slutförande. |
!findappdomain 00a79d98 |
Avgör programdomänen för ett objekt på adressen 00a79d98 . |
!gcinfo 5b68dbb8 |
Visar alla skräpinsamlarehandtag i den aktuella processen. |
!name2ee unittest.exe MainClass.Main |
MethodTable Visar - och-strukturerna Main EEClass för -metoden i -klassen MainClass i modulen unittest.exe . |
!token2ee unittest.exe 02000003 |
Visar information om metadatatoken på adressen 02000003 i modulen unittest.exe . |
LLDB-exempelanvändning
Kommando | beskrivning |
---|---|
dumparray -start 2 -length 5 -details 00ad28d0 |
Visar innehållet i en matris på adressen 00ad28d0 . Visningen startar från det andra elementet och fortsätter för fem element. |
dumpassembly 1ca248 |
Visar innehållet i en sammansättning på adressen 1ca248 . |
dumpheap |
Visar information om skräpinsamlingshögen. |
dumplog |
Skriver innehållet i minnesintern stresslogg till en (standard) fil med namnet StressLog.txt i den aktuella katalogen. |
dumpmd 902f40 |
MethodDesc Visar strukturen på adressen 902f40 . |
dumpmodule 1caa50 |
Visar information om en modul på adressen 1caa50 . |
dumpobj a79d40 |
Visar information om ett objekt på adressen a79d40 . |
dumpvc 0090320c 00a79d9c |
Visar fälten för en värdeklass på adressen 00a79d9c med hjälp av metodtabellen på adressen 0090320c . |
eeheap -gc |
Visar det processminne som används av skräpinsamlaren. |
findappdomain 00a79d98 |
Avgör programdomänen för ett objekt på adressen 00a79d98 . |
gcinfo 5b68dbb8 |
Visar alla skräpinsamlarehandtag i den aktuella processen. |
name2ee unittest.exe MainClass.Main |
MethodTable Visar - och-strukturerna Main EEClass för -metoden i -klassen MainClass i modulen unittest.exe . |
token2ee unittest.exe 02000003 |
Visar information om metadatatoken på adressen 02000003 i modulen unittest.exe . |
clrthreads |
Visar de hanterade trådarna. |