SOS.dll (SOS-foutopsporingsextensie)
Belangrijk
Dit artikel betreft de .NET Framework-versie van de SOS-foutopsporingsextensie. Zie sos-foutopsporingsextensie voor informatie over de nieuwere .NET-versie (Core) van het hulpprogramma.
De SOS-foutopsporingsextensie (SOS.dll) helpt u bij het opsporen van fouten in beheerde programma's in Visual Studio en in het Windows-foutopsporingsprogramma (WinDbg.exe) door informatie op te geven over de interne CLR-omgeving (Common Language Runtime). Voor dit hulpprogramma moet voor uw project onbeheerde foutopsporing zijn ingeschakeld. SOS.dll wordt automatisch geïnstalleerd met .NET Framework. Als u SOS.dll wilt gebruiken in Visual Studio, installeert u de Windows Driver Kit (WDK).
Syntaxis
![command] [options]
Opdracht
Opdracht | Beschrijving |
---|---|
AnalyzeOOM (ao) | Geeft de informatie weer voor de laatste uit het geheugen (OOM) die is opgetreden bij een toewijzingsaanvraag voor de garbagecollection heap. (In de garbagecollection van de server wordt OOM weergegeven, indien aanwezig, op elke garbagecollection heap.) |
BPMD [-nofuturemodule] [<naam van modulenaammethode<>>] [-md>MethodDesc <] -list -clear< pending breakpoint number-clearall> |
Hiermee maakt u een onderbrekingspunt bij de opgegeven methode in de opgegeven module. Als de opgegeven module en methode niet zijn geladen, wacht deze opdracht op een melding dat de module is geladen en just-in-time (JIT) is gecompileerd voordat u een onderbrekingspunt maakt. U kunt de lijst met onderbrekingspunten in behandeling beheren met behulp van de opties -list, -clear en -clearall : Met de optie -list wordt een lijst gegenereerd met alle onderbrekingspunten die in behandeling zijn. Als een onderbrekingspunt in behandeling een niet-nulmodule-id heeft, is dat onderbrekingspunt specifiek voor een functie in die specifieke geladen module. Als het onderbrekingspunt in behandeling een nulmodule-id heeft, is dat onderbrekingspunt van toepassing op modules die nog niet zijn geladen. Gebruik de optie -clear of clearall om in behandeling zijnde onderbrekingspunten uit de lijst te verwijderen. |
CLRStack [-a] [-l] [-p] [-n] | Biedt alleen een stacktracering van beheerde code. Met de optie -p worden argumenten voor de beheerde functie weergegeven. De optie -l toont informatie over lokale variabelen in een frame. De SOS-foutopsporingsextensie kan geen lokale namen ophalen, dus de uitvoer voor lokale namen heeft de indeling <van de lokale adreswaarde>=><. De optie -a(all) is een snelkoppeling voor -l en -p gecombineerd. Met de optie -n wordt de weergave van bronbestandsnamen en regelnummers uitgeschakeld. Als het foutopsporingsprogramma de optie heeft SYMOPT_LOAD_LINES opgegeven, zoekt SOS de symbolen voor elk beheerd frame op en wordt de bijbehorende bronbestandsnaam en het bijbehorende regelnummer weergegeven. De parameter -n (geen regelnummers) kan worden opgegeven om dit gedrag uit te schakelen. De SOS-foutopsporingsextensie geeft geen overgangsframes weer op x64- en IA-64-platforms. |
COMState | Geeft het COM-appartementsmodel weer voor elke thread en een Context aanwijzer, indien beschikbaar. |
DumpArray [-start<startIndex>] [-lengte<>] [-details] [-nofields] <matrixobjectadres> – of – DA [-start<startIndex>] [-lengte<>] [-detail] [-nofields] matrixobjectadres> |
Onderzoekt elementen van een matrixobject. Met de optie -start wordt de beginindex opgegeven waarop elementen moeten worden weergegeven. Met de optie -length geeft u op hoeveel elementen moeten worden weergegeven. Met de optie -details worden details van het element weergegeven met behulp van de indelingen DumpObj en DumpVC . Met de optie -nofields voorkomt u dat matrices worden weergegeven. Deze optie is alleen beschikbaar wanneer de optie -detail is opgegeven. |
DumpAssembly-assemblyadres<> | Geeft informatie weer over een assembly. Met de opdracht DumpAssembly worden meerdere modules weergegeven, als deze bestaan. U kunt een assemblyadres ophalen met behulp van de opdracht DumpDomain . |
DumpClass EEClass-adres<> | Geeft informatie weer over de EEClass structuur die is gekoppeld aan een type.Met de opdracht DumpClass worden statische veldwaarden weergegeven, maar worden geen niet-statische veldwaarden weergegeven. Gebruik de opdracht DumpMT, DumpObj, Name2EE of Token2EE om een EEClass structuuradres op te halen. |
DumpDomain [<domeinadres>] | Inventariseert elk Assembly object dat binnen het opgegeven AppDomain objectadres wordt geladen. Wanneer de opdracht DumpDomain zonder parameters wordt aangeroepen, worden alle AppDomain objecten in een proces weergegeven. |
DumpHeap [-stat] [-tekenreeksen] [-korte] [-min<grootte] [-max<grootte>>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable-adres>] [-type<gedeeltelijke typenaam>] [begin [einde]] | Geeft informatie weer over de verzamelde heap- en verzamelingsstatistieken over objecten. Met de opdracht DumpHeap wordt een waarschuwing weergegeven als er overmatige fragmentatie in de garbagecollection heap wordt gedetecteerd. De optie -stat beperkt de uitvoer tot de statistische typesamenvatting. De optie -strings beperkt de uitvoer tot een statistische tekenreekswaardesamenvatting. Met de optie -short beperkt u de uitvoer tot alleen het adres van elk object. Hiermee kunt u eenvoudig uitvoer van de opdracht doorsluisen naar een andere foutopsporingsprogrammaopdracht voor automatisering. Met de optie -min worden objecten genegeerd die kleiner zijn dan de size parameter, opgegeven in bytes (hex).Met de optie -max worden objecten genegeerd die groter zijn dan de size parameter, opgegeven in bytes (hex).De optie -thinlock rapporteert ThinLocks. Zie de opdracht SyncBlk voor meer informatie. De -startAtLowerBound optie dwingt de heap-wandeling af om te beginnen bij de ondergrens van een opgegeven adresbereik. Tijdens de planningsfase is de heap vaak niet beloopbaar omdat objecten worden verplaatst. Met deze optie wordt DumpHeap gedwongen om te beginnen met het doorlopen van de opgegeven ondergrens. U moet het adres van een geldig object opgeven als de ondergrens voor deze optie. U kunt geheugen weergeven op het adres van een ongeldig object om de volgende methodetabel handmatig te vinden. Als de garbagecollection zich momenteel in een aanroep bevindt, memcopy kunt u mogelijk ook het adres van het volgende object vinden door de grootte toe te voegen aan het beginadres, dat wordt opgegeven als parameter.Met de optie -mt worden alleen de objecten weergegeven die overeenkomen met de opgegeven MethodTable structuur.Met de optie -type worden alleen de objecten weergegeven waarvan de typenaam een subtekenreeksovereenkomst is van de opgegeven tekenreeks. De start parameter begint met het weergeven van het opgegeven adres.De end parameter stopt de vermelding op het opgegeven adres. |
Object DumpIL<Managed DynamicMethod | <>DynamicMethodDesc-aanwijzer> | <MethodDesc-aanwijzer> | Geeft de algemene tussenliggende taal (CIL) weer die is gekoppeld aan een beheerde methode. Houd er rekening mee dat dynamische CIL anders wordt verzonden dan CIL dat vanuit een assembly wordt geladen. Dynamische CIL verwijst naar objecten in een beheerde objectmatrix in plaats van naar metagegevenstokens. |
DumpLog [-addr<addressOfStressLog>] [<Filename >] |
Hiermee schrijft u de inhoud van een stresslogboek in het geheugen naar het opgegeven bestand. Als u geen naam opgeeft, maakt u met deze opdracht een bestand met de naam StressLog.txt in de huidige map. Het stresslogboek in het geheugen helpt u stressfouten te diagnosticeren zonder vergrendelingen of I/O te gebruiken. Als u het stresslogboek wilt inschakelen, stelt u de volgende registersleutels in onder HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. NETFramework: (DWORD) StressLog = 1 (DWORD) LogFacility = 0xffffffff (DWORD) StressLogSize = 65536 Met de optionele -addr optie kunt u een ander stresslogboek opgeven dan het standaardlogboek. |
DumpMD<MethodDesc-adres> | Geeft informatie weer over een MethodDesc structuur op het opgegeven adres.U kunt de OPDRACHT IP2MD gebruiken om het MethodDesc structuuradres op te halen uit een beheerde functie. |
DumpMT [-MD] <MethodTable-adres> | Geeft informatie weer over een methodetabel op het opgegeven adres. Als u de optie -MD opgeeft, wordt een lijst weergegeven met alle methoden die zijn gedefinieerd met het object. Elk beheerd object bevat een methodetabelpointer. |
DumpMethodSig<sigaddr><moduleaddr > |
Geeft informatie weer over een MethodSig structuur op het opgegeven adres. |
DumpModule [-mt] <Moduleadres> | Geeft informatie weer over een module op het opgegeven adres. Met de optie -mt worden de typen weergegeven die zijn gedefinieerd in een module en de typen waarnaar wordt verwezen door de module U kunt de opdracht DumpDomain of DumpAssembly gebruiken om het adres van een module op te halen. |
DumpObj [-nofields] <objectadres> – of – DO-objectadres<> |
Geeft informatie weer over een object op het opgegeven adres. Met de opdracht DumpObj worden de velden, de EEClass structuurgegevens, de methodetabel en de grootte van het object weergegeven.U kunt de opdracht DumpStackObjects gebruiken om het adres van een object op te halen. Houd er rekening mee dat u de opdracht DumpObj kunt uitvoeren op velden van het type CLASS , omdat ze ook objecten zijn.Met de - optie Nofields voorkomt u dat velden van het object worden weergegeven. Dit is handig voor objecten zoals Tekenreeks. |
DumpRuntimeTypes | Geeft de runtimetypeobjecten weer in de garbagecollection-heap en vermeldt de bijbehorende typenamen en methodetabellen. |
DumpStack [-EE] [-n] [top stack [bottom stack]] |
Geeft een stacktracering weer. De optie -EE zorgt ervoor dat de opdracht DumpStack alleen beheerde functies weergeeft. Gebruik de top en bottom parameters om de stackframes te beperken die worden weergegeven op x86-platforms.Met de optie -n wordt de weergave van bronbestandsnamen en regelnummers uitgeschakeld. Als het foutopsporingsprogramma de optie heeft SYMOPT_LOAD_LINES opgegeven, zoekt SOS de symbolen voor elk beheerd frame op en wordt de bijbehorende bronbestandsnaam en het bijbehorende regelnummer weergegeven. De parameter -n (geen regelnummers) kan worden opgegeven om dit gedrag uit te schakelen. Op x86- en x64-platforms maakt de opdracht DumpStack een uitgebreide stack-trace. Op platforms op basis van IA-64 mimeert de DumpStack-opdracht de K-opdracht van het foutopsporingsprogramma. De top parameters bottom worden genegeerd op IA-64-platforms. |
DumpSig<sigaddr moduleaddr><> | Geeft informatie weer over een Sig structuur op het opgegeven adres. |
DumpSigElem<sigaddr moduleaddr><> | Hiermee wordt één element van een handtekeningobject weergegeven. In de meeste gevallen moet u DumpSig gebruiken om afzonderlijke handtekeningobjecten te bekijken. Als een handtekening echter op een of andere manier is beschadigd, kunt u DumpSigElem gebruiken om de geldige gedeelten ervan te lezen. |
DumpStackObjects [-verify] [top stack [bottom stack]]– of – DSO [-verify] [ top stack [bottom stack]] |
Geeft alle beheerde objecten weer die binnen de grenzen van de huidige stack zijn gevonden. Met de optie -verify wordt elk niet-statisch CLASS veld van een objectveld gevalideerd.Gebruik de opdracht DumpStackObject met stacktraceringsopdrachten zoals de K-opdracht en de CLRStack-opdracht om de waarden van lokale variabelen en parameters te bepalen. |
Adres van<>DumpVC<MethodTable> | Geeft informatie weer over de velden van een waardeklasse op het opgegeven adres. Met de parameter MethodTable kan de Opdracht DumpVC velden correct interpreteren. Waardeklassen hebben geen methodetabel als eerste veld. |
EEHeap [-gc] [-loader] | Geeft informatie weer over procesgeheugen dat wordt verbruikt door interne CLR-gegevensstructuren. De opties -gc en -loader beperken de uitvoer van deze opdracht tot garbagecollector- of laadprogrammagegevensstructuren. De informatie voor de garbagecollection vermeldt de bereiken van elk segment in de beheerde heap. Als de aanwijzer binnen een segmentbereik valt dat is opgegeven door -gc, is de aanwijzer een objectaanwijzer. |
EEStack [-short] [-EE] | Hiermee wordt de opdracht DumpStack uitgevoerd op alle threads in het proces. De optie -EE wordt rechtstreeks doorgegeven aan de opdracht DumpStack . De -short-parameter beperkt de uitvoer tot de volgende soorten threads: Threads die een slot hebben genomen. Threads die zijn vastgelopen om een garbagecollection toe te staan. Threads die zich momenteel in beheerde code bevinden. |
EEVersion | Geeft de CLR-versie weer. |
EHInfo [<MethodDesc address>] [<Code address>] | Geeft de afhandelingsblokken voor uitzonderingen weer in een opgegeven methode. Met deze opdracht worden de codeadressen en offsets voor het componentblok (het try blok) en het handlerblok (het catch blok) weergegeven. |
Veelgestelde vragen | Geeft veelgestelde vragen weer. |
FinalizeQueue [-detail] | [-allReady] [-short] | Geeft alle objecten weer die zijn geregistreerd voor de voltooien. De optie -detail geeft extra informatie weer over alle SyncBlocks die moeten worden opgeschoond en alle RuntimeCallableWrappers (RCW's) die wachten op opschonen. Beide gegevensstructuren worden in de cache opgeslagen en opgeschoond door de finalizer-thread wanneer deze wordt uitgevoerd.Met -allReady de optie worden alle objecten weergegeven die gereed zijn voor voltooien, ongeacht of ze al zijn gemarkeerd door de garbagecollection, of worden gemarkeerd door de volgende garbagecollection. De objecten die zich in de lijst 'Gereed voor voltooien' bevinden, zijn voltooide objecten die niet meer zijn geroot. Deze optie kan erg duur zijn, omdat hiermee wordt gecontroleerd of alle objecten in de definitieve wachtrijen nog steeds zijn geroot.De -short optie beperkt de uitvoer tot het adres van elk object. Als deze wordt gebruikt in combinatie met -allReady, worden alle objecten geïnventariseerd met een finalizer die niet meer zijn geroot. Als deze afzonderlijk wordt gebruikt, worden alle objecten in de voltooide wachtrijen en 'gereed voor voltooien' weergegeven. |
Adres van FindAppDomain-object<> | Bepaalt het toepassingsdomein van een object op het opgegeven adres. |
FindRoots -gen<N> | -gen elke |<objectadres> | Zorgt ervoor dat het foutopsporingsprogramma in de foutopsporing wordt onderbroken in de volgende verzameling van de opgegeven generatie. Het effect wordt opnieuw ingesteld zodra de onderbreking plaatsvindt. Als u de volgende verzameling wilt verbreken, moet u de opdracht opnieuw uitvoeren. De <objectadresvorm> van deze opdracht wordt gebruikt nadat de onderbreking is veroorzaakt door de eventuele gebeurtenissen -gen of -gen. Op dat moment heeft de foutopsporing de juiste status voor FindRoots om wortels voor objecten van de huidige veroordeelde generaties te identificeren. |
GCHandles [-perdomain] | Geeft statistieken weer over garbagecollection-ingangen in het proces. De optie -perdomain rangschikt de statistieken per toepassingsdomein. Gebruik de opdracht GCHandles om geheugenlekken te vinden die worden veroorzaakt door garbagecollection-lekken. Een geheugenlek treedt bijvoorbeeld op wanneer code een grote matrix behoudt omdat er nog steeds een sterke garbagecollectorgreep naar verwijst en de ingang wordt verwijderd zonder deze vrij te maken. |
GCHandleLeaks | Zoekt in het geheugen naar verwijzingen naar sterke en vastgemaakte garbagecollectorgrepen in het proces en geeft de resultaten weer. Als er een ingang wordt gevonden, geeft de opdracht GCHandleLeaks het adres van de verwijzing weer. Als er geen ingang in het geheugen wordt gevonden, wordt met deze opdracht een melding weergegeven. |
Adrescodeadres><GCInfo<MethodDesc> | Geeft gegevens weer die aangeeft wanneer registers of stacklocaties beheerde objecten bevatten. Als er een garbagecollection optreedt, moet de collector de locaties van verwijzingen naar objecten weten, zodat deze kunnen worden bijgewerkt met nieuwe objectpointerwaarden. |
GCRoot [-nostacks] <Objectadres> | Geeft informatie weer over verwijzingen (of roots) naar een object op het opgegeven adres. De GCRoot-opdracht onderzoekt de volledige beheerde heap en de handletabel voor ingangen binnen andere objecten en ingangen op de stack. Elke stack wordt vervolgens gezocht naar aanwijzers naar objecten en de finalizerwachtrij wordt ook doorzocht. Met deze opdracht wordt niet bepaald of een stack-hoofdmap geldig is of wordt verwijderd. Gebruik de CLRStack - en U-opdrachten om het frame te demonteren waartoe de lokale waarde of argumentwaarde behoort om te bepalen of de stack-hoofdmap nog in gebruik is. De optie -nostacks beperkt de zoekopdracht tot garbagecollection-ingangen en bereikbare objecten. |
GCWhere-objectadres< > | Geeft de locatie en grootte weer in de garbagecollection heap van het argument dat is doorgegeven. Wanneer het argument in de beheerde heap ligt, maar geen geldig objectadres is, wordt de grootte weergegeven als 0 (nul). |
help [<opdracht>] [faq ] |
Geeft alle beschikbare opdrachten weer wanneer er geen parameter is opgegeven of geeft gedetailleerde Help-informatie weer over de opgegeven opdracht. De faq parameter geeft antwoorden op veelgestelde vragen weer. |
HeapStat [-inclUnrooted-iu | ] | Geeft de generatiegrootten weer voor elke heap en de totale vrije ruimte in elke generatie op elke heap. Als de optie -inclUnrooted is opgegeven, bevat het rapport informatie over de beheerde objecten uit de garbagecollection heap die niet meer is geroot. |
Hist Clear | Publiceert alle resources die worden gebruikt door de reeks Hist opdrachten.Over het algemeen hoeft u niet expliciet aan te roepen HistClear , omdat de vorige resources worden HistInit opgeschoond. |
HistInit | Initialiseert de SOS-structuren uit het stresslogboek dat is opgeslagen in de foutopsporing. |
HistObj <obj_address> | Onderzoekt alle herlocatierecords van stresslogboeken en toont de keten van garbagecollectionverplaatsingen die mogelijk hebben geleid tot het adres dat als argument is doorgegeven. |
HistObjFind <obj_address> | Geeft alle logboekvermeldingen weer die verwijzen naar een object op het opgegeven adres. |
HistRoot-hoofdmap <> | Geeft informatie weer met betrekking tot zowel promoties als verplaatsingen van de opgegeven hoofdmap. De hoofdwaarde kan worden gebruikt om de verplaatsing van een object via de garbagecollections bij te houden. |
IP2MD-codeadres<> | Geeft de MethodDesc structuur weer op het opgegeven adres in code die is gecompileerd met JIT. |
ListNearObj (lno ) <obj_address> |
Geeft de objecten weer die voorafgaan aan en volgen op het opgegeven adres. Met de opdracht wordt gezocht naar het adres in de garbagecollection-heap die eruitziet als een geldig begin van een beheerd object (op basis van een geldige methodetabel) en het object dat volgt op het argumentadres. |
MinidumpMode [0] [1] | Hiermee voorkomt u dat onveilige opdrachten worden uitgevoerd wanneer u een minidump gebruikt. Geef 0 door om deze functie of 1 uit te schakelen om deze functie in te schakelen. Standaard is de waarde MinidumpMode ingesteld op 0. Minidumps die zijn gemaakt met de opdracht .dump /m of .dump hebben beperkte CLR-specifieke gegevens en u kunt alleen een subset van SOS-opdrachten correct uitvoeren. Sommige opdrachten kunnen mislukken met onverwachte fouten omdat vereiste gebieden van het geheugen niet zijn toegewezen of slechts gedeeltelijk zijn toegewezen. Met deze optie kunt u onveilige opdrachten uitvoeren tegen minidumps. |
Naam2EE-modulenaamtype><<of methodenaam> – of – Naam2EE-modulenaam!<<>type of methodenaam> |
Geeft de MethodTable structuur en EEClass structuur weer voor het opgegeven type of de opgegeven methode in de opgegeven module.De opgegeven module moet in het proces worden geladen. Als u de juiste typenaam wilt ophalen, bladert u door de module met behulp van de Ildasm.exe (IL Disassembler). U kunt ook doorgeven * als de parameter voor de modulenaam om alle geladen beheerde modules te doorzoeken. De parameter voor de modulenaam kan ook de naam van het foutopsporingsprogramma zijn voor een module, zoals mscorlib of image00400000 .Deze opdracht ondersteunt de syntaxis van het Windows-foutopsporingsprogramma van << module >>! type . Het type moet volledig zijn gekwalificeerd. |
ObjSize [<Objectadres>] | [-aggregaat] [-stat] | Geeft de grootte van het opgegeven object weer. Als u geen parameters opgeeft, geeft de opdracht ObjSize de grootte weer van alle objecten die zijn gevonden op beheerde threads, worden alle garbagecollection-ingangen in het proces weergegeven en wordt de grootte van objecten die door deze ingangen worden verwezen, totaliseren. De opdracht ObjSize bevat de grootte van alle onderliggende objecten naast het bovenliggende object. De optie -aggregate kan worden gebruikt in combinatie met het argument -stat om een gedetailleerde weergave te krijgen van de typen die nog steeds zijn geroot. Door !dumpheap -stat en !objsize -aggregate -stat te gebruiken, kunt u bepalen welke objecten niet meer zijn geroot en verschillende geheugenproblemen diagnosticeren. |
PrintException [-nested] [-lines] [<Uitzonderingsobjectadres>] – of – PE [genest] [<Adres van> uitzonderingsobject] |
Hiermee worden velden weergegeven en opgemaakt van een object dat is afgeleid van de Exception klasse op het opgegeven adres. Als u geen adres opgeeft, wordt met de opdracht PrintException de laatste uitzondering weergegeven die op de huidige thread is opgetreden. Met de optie -geneste worden details weergegeven over geneste uitzonderingsobjecten. Met de optie -lines worden brongegevens weergegeven, indien beschikbaar. U kunt deze opdracht gebruiken om het _stackTrace veld op te maken en weer te geven. Dit is een binaire matrix. |
ProcInfo [-env] [-time] [-mem] | Geeft omgevingsvariabelen weer voor het proces, de CPU-tijd van de kernel en statistieken over geheugengebruik. |
RCWCleanupList<RCWCleanupList-adres> | Geeft de lijst weer met runtime aanroepbare wrappers op het opgegeven adres dat wacht op opschonen. |
Bestandsnaam van saveModule-basisadres<><> | Hiermee schrijft u een afbeelding, die in het geheugen op het opgegeven adres wordt geladen, naar het opgegeven bestand. |
SOSFlush | Hiermee wordt een interne SOS-cache leeggemaakt. |
StopOnException [-afgeleide] [-create-create2 | ] <Uitzondering><Pseudo-registernummer> | Zorgt ervoor dat het foutopsporingsprogramma stopt wanneer de opgegeven uitzondering wordt gegenereerd, maar om door te gaan wanneer andere uitzonderingen worden gegenereerd. De -afgeleide optie onderschept de opgegeven uitzondering en elke uitzondering die is afgeleid van de opgegeven uitzondering. |
SyncBlk [-all | <syncblk number>] | Geeft de opgegeven SyncBlock structuur of alle SyncBlock structuren weer. Als u geen argumenten doorgeeft, geeft de opdracht SyncBlk de SyncBlock structuur weer die overeenkomt met objecten die eigendom zijn van een thread.Een SyncBlock structuur is een container voor extra informatie die niet hoeft te worden gemaakt voor elk object. Het kan COM-gegevens, hashcodes en vergrendelingsinformatie bevatten voor thread-veilige bewerkingen. |
ThreadPool | Geeft informatie weer over de beheerde threadgroep, inclusief het aantal werkaanvragen in de wachtrij, het aantal voltooiingspoortthreads en het aantal timers. |
Token2EE-modulenaamtoken<><> | Hiermee wordt het opgegeven metagegevenstoken in de opgegeven module omgezet in een MethodTable structuur of MethodDesc structuur.U kunt de parameter voor de modulenaam doorgeven * om te vinden waarnaar dat token is toegewezen in elke geladen beheerde module. U kunt ook de naam van het foutopsporingsprogramma doorgeven voor een module, zoals mscorlib of image00400000 . |
Threads [-live] [-special] | Geeft alle beheerde threads in het proces weer. Met de opdracht Threads wordt de shorthand-id van het foutopsporingsprogramma, de CLR-thread-id en de thread-id van het besturingssysteem weergegeven. Daarnaast geeft de opdracht Threads een domeinkolom weer die het toepassingsdomein aangeeft waarin een thread wordt uitgevoerd, een APT-kolom die de COM-appartementsmodus weergeeft en een uitzonderingskolom waarin de laatste uitzondering wordt weergegeven die in de thread is opgetreden. Met de optie -live worden threads weergegeven die zijn gekoppeld aan een live-thread. Met de optie -special worden alle speciale threads weergegeven die zijn gemaakt door de CLR. Speciale threads zijn threads voor garbagecollection (in gelijktijdige en server garbagecollection), helperthreads voor foutopsporingsprogramma's, finalizer-threads, AppDomain het verwijderen van threads en timerthreads voor threadgroepen. |
Waardeveld ThreadState State < > | Geeft de status van de thread weer. De value parameter is de waarde van het veld in de uitvoer van het State threads-rapport .Voorbeeld: 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 |
Bestandsnaam van TraverseHeap [-xml] <> | Hiermee schrijft u heapgegevens naar het opgegeven bestand in een indeling die wordt begrepen door de CLR-profiler. De optie -XML zorgt ervoor dat de opdracht TraverseHeap het bestand opmaken als XML. |
U [-gcinfo] [-ehinfo] [-n] <MethodDesc-adres | <>Codeadres> | Geeft een geannoteerde demontage van een beheerde methode weer die is opgegeven door een MethodDesc structuuraanwijzer voor de methode of door een codeadres in de hoofdtekst van de methode. Met de U-opdracht wordt de hele methode van begin tot eind weergegeven, met aantekeningen die metagegevenstokens converteren naar namen.De optie -gcinfo zorgt ervoor dat de U-opdracht de GCInfo structuur voor de methode weergeeft.Met de optie -ehinfo worden uitzonderingsinformatie voor de methode weergegeven. U kunt deze informatie ook verkrijgen met de opdracht EHInfo . Met de optie -n wordt de weergave van bronbestandsnamen en regelnummers uitgeschakeld. Als het foutopsporingsprogramma de optie heeft SYMOPT_LOAD_LINES opgegeven, zoekt SOS de symbolen voor elk beheerd frame op en geeft, indien geslaagd, de bijbehorende bronbestandsnaam en het bijbehorende regelnummer weer. U kunt de optie -n opgeven om dit gedrag uit te schakelen. |
VerifyHeap | Controleert de garbagecollection heap op tekenen van beschadiging en geeft eventuele gevonden fouten weer. Heap-beschadigingen kunnen worden veroorzaakt door aanroepen van platformaanroepen die onjuist zijn samengesteld. |
Objectadres van VerifyObj<> | Controleert het object dat wordt doorgegeven als argument voor tekenen van beschadiging. |
VMMap | Doorkruist de virtuele adresruimte en geeft het type beveiliging weer dat op elke regio wordt toegepast. |
VMStat | Biedt een overzichtsweergave van de virtuele adresruimte, gesorteerd op elk type beveiliging dat op dat geheugen wordt toegepast (gratis, gereserveerd, vastgelegd, privé, toegewezen, installatiekopie). De kolom TOTAL geeft het resultaat weer van de kolom GEMIDDELDE vermenigvuldigd met de kolom BLK COUNT. |
Opmerkingen
Met de EXTENSIE VOOR SOS-foutopsporing kunt u informatie bekijken over code die wordt uitgevoerd in de CLR. U kunt bijvoorbeeld de SOS-foutopsporingsextensie gebruiken om informatie weer te geven over de beheerde heap, te zoeken naar heap-beschadigingen, interne gegevenstypen weer te geven die door de runtime worden gebruikt en informatie weer te geven over alle beheerde code die in de runtime wordt uitgevoerd.
Als u de SOS-foutopsporingsextensie in Visual Studio wilt gebruiken, installeert u de Windows Driver Kit (WDK). Zie Debugging Environments voor informatie over de geïntegreerde foutopsporingsomgeving in Visual Studio.
U kunt de SOS-foutopsporingsextensie ook gebruiken door deze te laden in het WinDbg.exe foutopsporingsprogramma en opdrachten uit te voeren binnen WinDbg.exe.
Als u de SOS-foutopsporingsextensie wilt laden in het WinDbg.exe foutopsporingsprogramma, voert u de volgende opdracht uit in het hulpprogramma:
.loadby sos clr
WinDbg.exe en Visual Studio gebruiken een versie van SOS.dll die overeenkomt met de versie van Mscorwks.dll die momenteel in gebruik is. Standaard moet u de versie van SOS.dll gebruiken die overeenkomt met de huidige versie van Mscorwks.dll.
Als u een dumpbestand wilt gebruiken dat op een andere computer is gemaakt, moet u ervoor zorgen dat het Mscorwks.dll bestand dat bij die installatie is geleverd, zich in het symboolpad bevindt en de bijbehorende versie van SOS.dll laadt.
Als u een specifieke versie van SOS.dll wilt laden, typt u de volgende opdracht in het Windows-foutopsporingsprogramma:
.load <full path to sos.dll>
Voorbeelden
Met de volgende opdracht wordt de inhoud van een matrix op het adres 00ad28d0
weergegeven. De weergave begint vanaf het tweede element en gaat door met vijf elementen.
!dumparray -start 2 -length 5 -detail 00ad28d0
Met de volgende opdracht wordt de inhoud van een assembly op het adres 1ca248
weergegeven.
!dumpassembly 1ca248
Met de volgende opdracht wordt informatie weergegeven over de garbagecollection heap.
!dumpheap
Met de volgende opdracht wordt de inhoud van het stresslogboek in het geheugen geschreven naar een (standaard) bestand met de naam StressLog.txt in de huidige map.
!DumpLog
Met de volgende opdracht wordt de MethodDesc
structuur op het adres 902f40
weergegeven.
!dumpmd 902f40
Met de volgende opdracht wordt informatie weergegeven over een module op het adres 1caa50
.
!dumpmodule 1caa50
Met de volgende opdracht wordt informatie weergegeven over een object op het adres a79d40
.
!DumpObj a79d40
Met de volgende opdracht worden de velden van een waardeklasse op het adres 00a79d9c
weergegeven met behulp van de methodetabel op het adres 0090320c
.
!DumpVC 0090320c 00a79d9c
Met de volgende opdracht wordt het procesgeheugen weergegeven dat door de garbagecollector wordt gebruikt.
!eeheap -gc
Met de volgende opdracht worden alle objecten weergegeven die zijn gepland voor de voltooien.
!finalizequeue
De volgende opdracht bepaalt het toepassingsdomein van een object op het adres 00a79d98
.
!findappdomain 00a79d98
Met de volgende opdracht worden alle garbagecollection-ingangen in het huidige proces weergegeven.
!gcinfo 5b68dbb8
Met de volgende opdracht worden de MethodTable
en EEClass
structuren voor de Main
methode in de klasse MainClass
in de module unittest.exe
weergegeven.
!name2ee unittest.exe MainClass.Main
Met de volgende opdracht wordt informatie weergegeven over het metagegevenstoken op het adres 02000003
in de module unittest.exe
.
!token2ee unittest.exe 02000003