SOS.dll (SOS-felsökningstillägg)
Viktigt!
Den här artikeln gäller .NET Framework-versionen av SOS-felsökningstillägget. Information om den nyare .NET-versionen (Core) av verktyget finns i SOS-felsökningstillägget.
SOS-felsökningstillägget (SOS.dll) hjälper dig att felsöka hanterade program i Visual Studio och i Windows-felsökningsprogrammet (WinDbg.exe) genom att ange information om den interna CLR-miljön (Common Language Runtime). Det här verktyget kräver att projektet har ohanterad felsökning aktiverat. SOS.dll installeras automatiskt med .NET Framework. Installera Windows Driver Kit (WDK) om du vill använda SOS.dll i Visual Studio.
Syntax
![command] [options]
Kommandon
Kommando | beskrivning |
---|---|
AnalyzeOOM (ao) | Visar information för den senaste minnesbristen (OOM) som inträffade i en allokeringsbegäran till skräpinsamlingshögen. (I serverns skräpinsamling visas OOM, om någon, på varje skräpinsamlings-heap.) |
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] | 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(all) ä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. SOS-felsökningstillägget visar inte övergångsramar på x64- och IA-64-baserade plattformar. |
COMState | Visar com-lägenhetsmodellen för varje tråd och en Context pekare, om den är tillgänglig. |
DumpArray [-start<startIndex>] [längd<]> [-details] [-nofields] <matrisobjektadress> -eller- DA [-start<startIndex>] [längd<]> [-detalj] [-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 -detail har angetts. |
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. |
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 (hex).Alternativet -max ignorerar objekt som är större än parametern size , som anges i byte (hex).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. Observera att 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>] [<Filename >] |
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. |
DumpMethodSig sigaddr<>moduleadd<r > |
Visar information om en MethodSig struktur på den angivna adressen. |
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. Observera att 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. På x86- och x64-plattformar skapar DumpStack-kommandot en utförlig stackspårning. På IA-64-baserade plattformar efterliknar DumpStack-kommandot felsökarens K-kommando . Parametrarna top och bottom ignoreras på IA-64-baserade plattformar. |
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, till exempel K-kommandot och CLRStack-kommandot 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 CLR-datastrukturer. 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. |
EEVersion | Visar CLR-versionen. |
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. |
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. |
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. |
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. |
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. |
Objektadress för GCRoot [-nostacks] <> | 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. |
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 [<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. |
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<> | 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. |
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. |
Namn2EE-modulens<namntyp<>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. |
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. |
RCWCleanupList<RCWCleanupList-adress> | Visar listan över anropsbara omslutningar för körning på den angivna adress som väntar på rensning. |
SparaModule-basadress><<Filnamn> | Skriver en bild, som läses in i minnet på den angivna adressen, till den angivna filen. |
SOSFlush | Rensar en intern SOS-cache. |
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. |
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. |
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 . |
Trådar [-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.Exempel: 0:003> !Threads ThreadCount: 2 UnstartedThread: 0 BackgroundThread: 1 PendingThread: 0 DeadThread: 0 Hosted Runtime: no PreEmptive GC Alloc Lock ID OSID ThreadOBJ State GC Context Domain Count APT Exception 0 1 250 0019b068 a020 Disabled 02349668:02349fe8 0015def0 0 MTA 2 2 944 001a6020 b220 Enabled 00000000:00000000 0015def0 0 MTA (Finalizer) 0:003> !ThreadState b220 Legal to Join Background CLR Owns CoInitialized In Multi Threaded Apartment |
TraverseHeap [-xml] <filnamn> | Skriver heapinformation till den angivna filen i ett format som förstås av CLR-profileraren. Alternativet -xml gör att traverseHeap-kommandot formaterar filen som XML. |
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. |
VMMap | Passerar det virtuella adressutrymmet och visar vilken typ av skydd som tillämpas på varje region. |
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. |
Kommentarer
Med SOS-felsökningstillägget kan du visa information om kod som körs i CLR. Du kan till exempel använda SOS-felsökningstillägget för att visa information om den hanterade heapen, leta efter heap-skador, visa interna datatyper som används av körningen och visa information om all hanterad kod som körs i körningen.
Om du vill använda SOS-felsökningstillägget i Visual Studio installerar du Windows Driver Kit (WDK). Information om den integrerade felsökningsmiljön i Visual Studio finns i Felsökningsmiljöer.
Du kan också använda SOS-felsökningstillägget genom att läsa in det i WinDbg.exe felsökningsprogrammet och köra kommandon i WinDbg.exe.
Om du vill läsa in SOS-felsökningstillägget i WinDbg.exe felsökaren kör du följande kommando i verktyget:
.loadby sos clr
WinDbg.exe och Visual Studio använder en version av SOS.dll som motsvarar den version av Mscorwks.dll som för närvarande används. Som standard bör du använda den version av SOS.dll som matchar den aktuella versionen av Mscorwks.dll.
Om du vill använda en dumpfil som skapats på en annan dator kontrollerar du att den Mscorwks.dll fil som medföljer installationen finns i symbolsökvägen och läser in motsvarande version av SOS.dll.
Om du vill läsa in en specifik version av SOS.dll skriver du följande kommando i Windows-felsökningsprogrammet:
.load <full path to sos.dll>
Exempel
Följande kommando visar innehållet i en matris på adressen 00ad28d0
. Visningen startar från det andra elementet och fortsätter för fem element.
!dumparray -start 2 -length 5 -detail 00ad28d0
Följande kommando visar innehållet i en sammansättning på adressen 1ca248
.
!dumpassembly 1ca248
Följande kommando visar information om skräpinsamlingshögen.
!dumpheap
Följande kommando skriver innehållet i minnesintern stresslogg till en (standard) fil med namnet StressLog.txt i den aktuella katalogen.
!DumpLog
Följande kommando visar MethodDesc
strukturen på adressen 902f40
.
!dumpmd 902f40
Följande kommando visar information om en modul på adressen 1caa50
.
!dumpmodule 1caa50
Följande kommando visar information om ett objekt på adressen a79d40
.
!DumpObj a79d40
Följande kommando visar fälten i en värdeklass på adressen 00a79d9c
med hjälp av metodtabellen på adressen 0090320c
.
!DumpVC 0090320c 00a79d9c
Följande kommando visar det processminne som används av skräpinsamlaren.
!eeheap -gc
Följande kommando visar alla objekt som är schemalagda för slutförande.
!finalizequeue
Följande kommando avgör programdomänen för ett objekt på adressen 00a79d98
.
!findappdomain 00a79d98
Följande kommando visar alla skräpinsamlarehandtag i den aktuella processen.
!gcinfo 5b68dbb8
Följande kommando visar MethodTable
EEClass
och strukturer för Main
metoden i klassen MainClass
i modulen unittest.exe
.
!name2ee unittest.exe MainClass.Main
Följande kommando visar information om metadatatoken på adressen 02000003
i modulen unittest.exe
.
!token2ee unittest.exe 02000003