SOS.dll (rozšíření ladění SOS)

Důležité

Tento článek se týká verze rozhraní .NET Framework rozšíření ladění SOS. Informace o novější verzi nástroje .NET (Core) najdete v tématu Rozšíření ladění SOS.

Rozšíření ladění SOS (SOS.dll) pomáhá ladit spravované programy v sadě Visual Studio a v ladicím programu systému Windows (WinDbg.exe) poskytnutím informací o interním prostředí CLR (Common Language Runtime). Tento nástroj vyžaduje, aby měl projekt povoleno nespravované ladění. SOS.dll se automaticky nainstaluje s rozhraním .NET Framework. Pokud chcete použít SOS.dll v sadě Visual Studio, nainstalujte sadu Windows Driver Kit (WDK).

Syntaxe

![command] [options]

Příkazy

Příkaz Popis
AnalyzeOOM (ao) Zobrazí informace pro poslední nedostatek paměti (OOM), ke kterým došlo v požadavku na přidělení haldy uvolňování paměti. (Při uvolňování paměti serveru se případná chyba v důsledku vyčerpání paměti (OOM) zobrazí u každé haldy uvolňování paměti zvlášť.)
BPMD [-nofuturemodule] [<název> metody názvu<>modulu] [-md<MethodDesc>] -list-clear< pending breakpoint number-clearall> Vytvoří ve zvoleném modulu zarážku u určené metody.

Pokud nebyl načten zvolený modul ani metoda, počká tento příkaz na notifikaci, že byl modul načten a zkompilován za běhu (JIT) před vytvořením zarážky.

Seznam čekajících zarážek můžete spravovat pomocí možností -list, -clear a -clearall :

Možnost -list vygeneruje seznam všech čekajících zarážek. Pokud má čekající zarážka nenulovou hodnotu ID modulu, pak je tato zarážka určena pro konkrétní funkci v konkrétním načteném modulu. Pokud má čekající zarážka nulovou hodnotu ID modulu, pak je tato zarážka určena modulům, které ještě nebyly načteny.

Pomocí možnosti -clear nebo -clearall odeberte nevyřízené zarážky ze seznamu.
CLRStack [-a] [-l] [-p] [-n] Poskytne trasování zásobníku pouze pro spravovaný kód.

Možnost -p zobrazuje argumenty spravované funkce.

Možnost -l zobrazuje informace o místních proměnných v rámci. Rozšíření ladění SOS nemůže načíst místní názvy, takže výstup místních názvů je ve formátu <hodnoty místní adresy>=><.

Možnost -a(all) je zkratka pro kombinaci -l a -p .

Možnost -n zakáže zobrazení názvů zdrojových souborů a čísel řádků. Pokud ladicí program má zadánu možnost SYMOPT_LOAD_LINES, bude nástroj SOS vyhledávat symboly pro každý spravovaný rámec a v případě úspěchu zobrazí odpovídající název zdrojového souboru a číslo řádku. Parametr -n (bez čísel řádků) lze zadat, aby se toto chování zakázalo.

Nástroj SOS Debugging Extension nezobrazuje přechodné rámce pro platformy založené na architekturách x64 a IA-64.
COMState Vypíše model bytu modelu COM pro každé vlákno a Context ukazatel, pokud je k dispozici.
DumpArray [-start<startIndex>] [-length length<>] [-details] [-nofields] <adresa objektu pole>

nebo

DA [-start<startIndex>] [-length length><] [-detail] [-nofields] adresa objektu pole>
Prozkoumá prvky objektu pole (typ array).

Možnost -start určuje počáteční index, ve kterém se mají zobrazit prvky.

Možnost -length určuje, kolik prvků se má zobrazit.

Možnost -details zobrazí podrobnosti o prvku pomocí dumpObj a dumpVC formátů.

Možnost -nofields zabraňuje zobrazení polí. Tato možnost je k dispozici pouze v případě, že je zadána možnost -detail .
Adresa sestavení DumpAssembly<> Zobrazí informace o sestavení.

Příkaz DumpAssembly vypíše více modulů, pokud existují.

Adresu sestavení můžete získat pomocí příkazu DumpDomain .
Adresa DumpClass<EEClass> Zobrazí informace o EEClass struktuře přidružené k typu.

Příkaz DumpClass zobrazí statické hodnoty polí, ale nezobrazuje nestatické hodnoty polí.

K získání EEClass adresy struktury použijte příkaz DumpMT, DumpObj, Name2EE nebo Token2EE.
DumpDomain [<doménová adresa>] Vytvoří výčet každého Assembly objektu načteného v zadané AppDomain adrese objektu. Při zavolání bez parametrů vypíše příkaz DumpDomain všechny AppDomain objekty v procesu.
DumpHeap [-stat] [-strings] [-short] [-min<size] [-max<size>>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable address>] [-type partial type<name>] [start [end]] Zobrazí informace o haldě uvolnění paměti a statistiky uvolňování objektů.

Příkaz DumpHeap zobrazí upozornění, pokud zjistí nadměrnou fragmentaci haldy uvolňování paměti.

Možnost -stat omezuje výstup na souhrn statistického typu.

Možnost -strings omezuje výstup na souhrn statistických řetězcových hodnot.

Parametr -short omezuje výstup pouze na adresu každého objektu. To umožňuje automatizovat snadným vytvořením kanálu pro výstup z příkazu do dalšího příkazu ladicího programu.

Možnost -min ignoruje objekty, které jsou menší než size parametr zadaný v bajtech (šestnáctkové).

Možnost -max ignoruje objekty, které jsou větší než size parametr zadaný v bajtech (šestnáctkové).

Možnost -thinlock hlásí ThinLocks. Další informace najdete v příkazu SyncBlk .

Možnost -startAtLowerBound vynutí chod haldy začít na dolním hranici zadaného rozsahu adres. Během fáze plánování často nelze haldu projít, jelikož je s objekty pohybováno. Tato možnost vynutí , aby DumpHeap začal chodit v zadané dolní hranici. Aby tato možnost fungovala, je třeba zadat adresu platného objektu jako dolní mez. Na adrese chybného objektu lze zobrazit paměť a vyhledat další tabulky metody ručně. Pokud je uvolňování paměti aktuálně ve volání memcopy, můžete být také schopni najít adresu dalšího objektu přidáním velikosti na počáteční adresu, která je zadána jako parametr.

Možnost -mt uvádí pouze ty objekty, které odpovídají zadané MethodTable struktuře.

Možnost -type uvádí pouze objekty, jejichž název typu je podřetězcem zadaného řetězce.

Parametr start začíná výpisem ze zadané adresy.

Parametr end zastaví výpis na zadané adrese.
Objekt DumpIL<Managed DynamicMethod | <>Ukazatel> DynamicMethodDesc | <Ukazatel MethodDesc> Zobrazí běžný zprostředkující jazyk (CIL), který je přidružený ke spravované metodě.

Všimněte si, že dynamický soubor CIL se vygeneruje jinak než CIL načtený ze sestavení. Dynamický identifikátor CIL odkazuje na objekty ve spravovaném poli objektů, nikoli na tokeny metadat.
DumpLog [-addr<addressOfStressLog>] [<Filename>] Zapíše obsah zátěžového protokolu uloženého v paměti do zadaného souboru. Pokud nebude název zadán, vytvoří příkaz v aktuálním adresáři soubor s názvem StressLog.txt.

Zátěžový protokol uložený v paměti pomáhá diagnostikovat zátěžová selhání bez pomoci zámků nebo vstupů a výstupů. Pokud chcete povolit protokol zatížení, nastavte v části HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft následující klíče registru. Netframework:

(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536

Volitelná -addr možnost umožňuje zadat jiný protokol zatížení než výchozí protokol.
Adresa DumpMD<MethodDesc> Zobrazí informace o MethodDesc struktuře na zadané adrese.

Pomocí příkazu IP2MD můžete získat MethodDesc adresu struktury ze spravované funkce.
Adresa metody DumpMT [-MD] <> Zobrazí informace o tabulce metod na zadané adrese. Zadáním možnosti -MD se zobrazí seznam všech metod definovaných s objektem.

Každý spravovaný objekt obsahuje ukazatel tabulky metod.
DumpMethodSig sigaddr<>moduleadd<r> Zobrazí informace o MethodSig struktuře na zadané adrese.
Adresa modulu DumpModule [-mt] <> Zobrazí informace o modulu na zadané adrese. Možnost -mt zobrazí typy definované v modulu a typy odkazované modulem.

Adresu modulu můžete načíst pomocí příkazu DumpDomain nebo DumpAssembly .
Adresa objektu DumpObj [-nofields] <>

nebo

Adresa objektu DO<>
Zobrazí informace o objektu na zadané adrese. Příkaz DumpObj zobrazí pole, EEClass informace o struktuře, tabulku metody a velikost objektu.

K načtení adresy objektu můžete použít příkaz DumpStackObjects .

Všimněte si, že příkaz DumpObj můžete spustit u polí typuCLASS, protože jsou to také objekty.

Možnost -nofields zabraňuje zobrazení polí objektu, je užitečné pro objekty, jako je String.
DumpRuntimeTypes Zobrazí objekty typu runtime z haldy systému uvolňování paměti a vypíše názvy s nimi asociovaných typů a tabulky metod.
DumpStack [-EE] [-n] [topstack [bottomstack]] Zobrazí trasování zásobníku.

Možnost -EE způsobí, že příkaz DumpStack zobrazí pouze spravované funkce. top Pomocí parametrů můžete bottom omezit snímky zásobníku zobrazené na platformách x86.

Možnost -n zakáže zobrazení názvů zdrojových souborů a čísel řádků. Pokud ladicí program má zadánu možnost SYMOPT_LOAD_LINES, bude nástroj SOS vyhledávat symboly pro každý spravovaný rámec a v případě úspěchu zobrazí odpovídající název zdrojového souboru a číslo řádku. Parametr -n (bez čísel řádků) lze zadat, aby se toto chování zakázalo.

Příkaz DumpStack na platformách x86 a x64 vytvoří podrobné trasování zásobníku.

Na platformách založených na IA-64 napodobuje příkaz DumpStack příkaz K ladicího programu. Parametry top a bottom parametry se ignorují na platformách založených na IA-64.
DumpSig sigaddr<>moduleaddr<> Zobrazí informace o Sig struktuře na zadané adrese.
DumpSigElem sigaddr<>moduleaddr<> Zobrazí jediný prvek objektu podpisu. Ve většině případů byste měli k zobrazení jednotlivých objektů podpisu použít DumpSig . Pokud je však podpis nějakým způsobem poškozen, můžete použít DumpSigElem ke čtení platných částí.
DumpStackObjects [-verify] [topstack [bottomstack]]

nebo

DSO [-verify] [topstack [bottomstack]]
Zobrazí všechny spravované objekty nalezené v rámci aktuálního zásobníku.

Možnost -verify ověří každé nestatické CLASS pole pole objektu.

Příkaz DumpStackObject použijte s příkazy trasování zásobníku, jako je příkaz K a příkaz CLRStack, k určení hodnot místních proměnných a parametrů.
Adresa<>metody DumpVC<> Zobrazí informace o polích třídy hodnot na konkrétní adrese.

Parametr MethodTable umožňuje příkazu DumpVC správně interpretovat pole. Třídy hodnot nemají jako první pole tabulku metod.
EEHeap [-gc] [-loader] Zobrazí informace o paměti procesu spotřebované interními datovými strukturami CLR.

Možnosti -gc a -loader omezují výstup tohoto příkazu na datové struktury uvolňování paměti nebo zavaděče.

Informace pro systém uvolňování paměti obsahují rozsahy každého segmentu ve spravované haldě. Pokud ukazatel spadá do rozsahu segmentu zadaného parametrem -gc, je ukazatel ukazatelem objektu.
EEStack [-short] [-EE] Spustí příkaz DumpStack na všech vláknech procesu.

Možnost -EE se předá přímo příkazu DumpStack . Parametr -short omezuje výstup na následující typy vláken:

Vlákna, která byla uzamknuta.

Vlákna, která byla kvůli uvolňování paměti pozastavena.

Vlákna, která jsou aktuálně ve spravovaném kódu.
EEVersion Zobrazí verzi CLR.
EHInfo [<Adresa> MethodDesc] [<Adresa kódu]> Zobrazí bloky zpracování výjimek v zadané metodě. Tento příkaz zobrazí adresy kódu a posuny bloku klauzule ( try blok) a blok obslužné rutiny ( catch blok).
Nejčastější dotazy Zobrazí nejčastější dotazy.
FinalizeQueue [-detail] | [-allReady] [-short] Zobrazí všechny objekty, které jsou registrovány pro dokončení.

Možnost -detail zobrazí další informace o všech SyncBlocks , které je potřeba vyčistit, a všechny RuntimeCallableWrappers rcWs, které čekají na vyčištění. Obě tyto datové struktury jsou uloženy do mezipaměti a vyčištěny finalizačním vláknem při spuštění.

Tato -allReady možnost zobrazí všechny objekty, které jsou připravené k dokončení, bez ohledu na to, zda jsou již označeny uvolňováním paměti, nebo budou označeny dalším uvolňováním paměti. Objekty, které jsou na seznamu objektů připravených k dokončení, jsou dokončitelné objekty, které již nezačínají kořenem. Tato možnost může být velice nákladná, jelikož ověřuje, zda všechny objekty ve frontě dokončitelných objektů stále začínají kořenem.

Možnost -short omezuje výstup na adresu každého objektu. Pokud se používá ve spojení s parametrem -allReady, vytvoří výčet všech objektů, které mají finalizační metodu, která již není rootována. Pokud je použita nezávisle, vypíše všechny objekty ve frontách s dokončitelnými objekty a objekty připravenými k dokončení.
Adresa objektu FindAppDomain<> Určuje doménu aplikace objektu na zadané adrese.
FindRoots-gen< N | >-gen any |<adresa objektu> Způsobí přerušení ladicího programu během ladění při dalším shromáždění zadané generace. Efekt se obnoví, jakmile dojde k přerušení. Pro přerušení dalšího shromažďování je třeba znovu zadat tento příkaz. Formulář <adresy> objektu tohoto příkazu se používá po přerušení způsobené -gen nebo -gen, došlo k jakékoli . V té době je ladicí program ve správném stavu pro FindRoots identifikovat kořeny pro objekty z aktuálních odsouzených generací.
GCHandles [-perdomain] Zobrazí statistické údaje o popisovačích systému uvolňování paměti v procesu.

Možnost -perdomain uspořádá statistiky podle domény aplikace.

Pomocí příkazu GCHandles vyhledejte nevrácenou paměť způsobenou nevracením popisovače uvolňování paměti. Neuvolnění paměti například nastane, když kód zachová velké pole, protože silný popisovač systému uvolňování paměti na něj stále ukazuje, zatímco je zrušen, aniž by bylo uvolněno pole.
GCHandleLeaks Vyhledá v paměti jakékoli odkazy na silné a připojené popisovače systému uvolňování paměti v procesu a zobrazí výsledky. Pokud je nalezen popisovač, příkaz GCHandleLeaks zobrazí adresu odkazu. Pokud není popisovač v paměti nalezen, zobrazí tento příkaz upozornění.
Adresa kódu adresy><GCInfo<MethodDesc> Zobrazí data, která označují, kdy registry nebo umístění zásobníku obsahují spravované objekty. Pokud dojde k uvolnění paměti, musí uvolňovač vědět o umístění odkazů na objekty, aby je bylo možné aktualizovat novou hodnotou ukazatele na objekt.
Adresa objektu GCRoot [-nostacks] <> Zobrazí informace o odkazech (nebo kořenech) na objekt na zadané adrese.

Příkaz GCRoot prozkoumá celou spravovanou haldu a tabulku popisovačů pro popisovače v jiných objektech a popisovačích v zásobníku. Každý zásobník následně vyhledá ukazatele na objekty a rovněž je prohledána fronta finalizační metody.

Tento příkaz neurčuje, zda je kořen zásobníku platný nebo zrušený. Pomocí příkazů CLRStack a U přeložte rámec, do kterého patří místní hodnota nebo hodnota argumentu, abyste zjistili, jestli je kořen zásobníku stále používán.

Možnost -nostacks omezuje vyhledávání na popisovače uvolňování paměti a dosažitelné objekty.
Adresa objektu GCWhere<> Zobrazí umístění a velikost předaného argumentu v haldě uvolňování paměti. Pokud argument leží ve spravované haldě, ale není platnou adresou objektu, je zobrazena velikost 0 (nula).
help [<command>] [faq] Zobrazí všechny dostupné příkazy, pokud není zadán žádný parametr, nebo zobrazí detailní informace nápovědy o zadaném příkazu.

Parametr faq zobrazuje odpovědi na nejčastější dotazy.
HeapStat [-inclUnrooted-iu | ] Zobrazí velikosti generací pro každou haldu a celkové volné místo v každé generaci v každé haldě. Pokud je zadána možnost -inclUnrooted , sestava obsahuje informace o spravovaných objektech z haldy uvolňování paměti, která již není rootována.
HistClear Uvolní všechny prostředky používané sadou Hist příkazů.

Obecně platí, že nemusíte explicitně volat HistClear, protože každý HistInit z nich vyčistí předchozí prostředky.
HistInit Inicializuje struktury SOS ze zátěžového protokolu uloženého v laděné položce.
HistObj<obj_address> Zkontroluje všechny záznamy přemístění zátěžového protokolu a zobrazí řetězec přemísťování uvolňování paměti, který může vést na adresu předanou jako argument.
HistObjFind<obj_address> Zobrazí všechny položky protokolu, které odkazují na objekt na zadané adrese.
Kořen HistRoot<> Zobrazí informace týkající se propagace a přemístění zadaného kořenu.

Hodnotu kořenu lze použít ke sledování pohybu objektu skrz uvolňování paměti.
Adresa kódu IP2MD<> MethodDesc Zobrazí strukturu na zadané adrese v kódu, který byl zkompilován JIT.
ListNearObj (lno) <obj_address> Zobrazí objekty před a za zadanou adresou. Tento příkaz vyhledá adresu v haldě uvolňování paměti vypadající jako platný začátek spravovaného objektu (podle platné tabulky metod) a objekt následující za adresou argumentu.
MinidumpMode [0] [1] Zabrání ve spuštění nebezpečných příkazů pomocí minimálního výpisu.

Pokud chcete tuto funkci zakázat, předejte 0 , nebo 1 tuto funkci povolíte. Ve výchozím nastavení je hodnota MinidumpMode nastavena na hodnotu 0.

Minidumps vytvořené pomocí příkazu .dump /m nebo příkazu .dump mají omezená data specifická pro CLR a umožňují správně spouštět pouze podmnožinu příkazů SOS. Některé příkazy mohou selhat s neočekávanými chybami, jelikož požadované oblasti paměti nejsou zmapovány nebo jsou zmapovány pouze částečně. Tato možnost zabraňuje ve spuštění nebezpečných příkazů s minimálním výpisem.
Název modulu<>Name2EE<– typ nebo název metody>

nebo

Název> modulu Name2EE!<<název typu nebo metody>
MethodTable Zobrazí strukturu a EEClass strukturu pro zadaný typ nebo metodu v zadaném modulu.

Zadaný modul musí být načten v procesu.

Pokud chcete získat správný název typu, projděte modul pomocí Ildasm.exe (IL Disassembler). Jako parametr názvu modulu můžete také předat * vyhledávání všech načtených spravovaných modulů. Parametr názvu modulu může být také názvem ladicího programu pro modul, například mscorlib nebo image00400000.

Tento příkaz podporuje syntaxi <<>module>!typeladicího programu systému Windows . Typ musí být plně kvalifikovaný.
ObjSize [<Adresa> objektu] | [-aggregate] [-stat] Zobrazí velikost zadaného objektu. Pokud nezadáte žádné parametry, zobrazí příkaz ObjSize velikost všech objektů nalezených ve spravovaných vláknech, zobrazí všechny popisovače uvolňování paměti v procesu a součet velikosti všech objektů odkazovaných těmito popisovači. Příkaz ObjSize obsahuje kromě nadřazeného objektu také velikost všech podřízených objektů.

Možnost -aggregate lze použít ve spojení s argumentem -stat k získání podrobného zobrazení typů, které jsou stále rootovány. Pomocí !dumpheap -stat a !objsize -aggregate -stat můžete určit, které objekty už nejsou rootovány, a diagnostikovat různé problémy s pamětí.
PrintException [-nested] [-lines] [<Adresa> objektu výjimky]

nebo

PE [-vnořená] [<Adresa> objektu výjimky]
Zobrazí a formátuje pole libovolného objektu Exception odvozeného z třídy na zadané adrese. Pokud nezadáte adresu, zobrazí příkaz PrintException poslední výjimku vyvolanou v aktuálním vlákně.

Možnost -vnořená zobrazí podrobnosti o vnořených objektech výjimek.

Možnost -lines zobrazí informace o zdroji, pokud jsou k dispozici.

Tento příkaz můžete použít k formátování a zobrazení _stackTrace pole, což je binární pole.
ProcInfo [-env] [-time] [-mem] Zobrazí proměnné prostředí pro proces, čas jádra CPU a statistiky využití paměti.
Adresa RCWCleanupList<RCWCleanupList> Zobrazí seznam obálek volatelných za běhu (RCW), které čekají na vyčištění, na zadané adrese.
Název souboru základní adresy<>SaveModule<> Zapíše bitovou kopii, která je načtena do paměti na zadané adrese, do zadaného souboru.
SOSFlush Vyprázdní interní mezipaměť SOS.
StopOnException [-derived] [-create-create2 | ] <Exception><Pseudo-register number> Způsobí, že se ladicí program zastaví, pokud je vyvolána zadaná výjimka, ale bude pokračovat, pokud je vyvolána jiná výjimka.

Možnost odvozená odvozuje zadanou výjimku a každou výjimku, která je odvozena od zadané výjimky.
SyncBlk [-all | <syncblk number>] Zobrazí zadanou SyncBlock strukturu nebo všechny SyncBlock struktury. Pokud nepředáte žádné argumenty, příkaz SyncBlk zobrazí SyncBlock strukturu odpovídající objektům, které vlastní vlákno.

Struktura SyncBlock je kontejner pro další informace, které nemusí být vytvořeny pro každý objekt. Může obsahovat data zprostředkovatele komunikace s objekty COM, hodnoty hash a informace o zamykání pro operace bezpečné pro přístup z více vláken.
Threadpool Zobrazí informace o spravovaném fondu vláken, včetně počtu pracovních požadavků ve frontě, počtu vláken portů dokončení a počtu časovačů.
Token s názvem<>modulu Token2EE<> Změní zadaný token metadat v zadaném modulu na MethodTable strukturu nebo MethodDesc strukturu.

Parametr názvu modulu můžete předat * , abyste zjistili, na co se tento token mapuje v každém načteném spravovaném modulu. Můžete také předat název ladicího programu pro modul, například mscorlib nebo image00400000.
Vlákna [-live] [-special] Zobrazí všechna spravovaná vlákna v procesu.

Příkaz Vlákna zobrazí zkrácené ID ladicího programu, ID vlákna CLR a ID vlákna operačního systému. Příkaz Vlákna navíc zobrazí sloupec Doména, který označuje doménu aplikace, ve které se spouští vlákno, sloupec APT, který zobrazuje režim bytu modelu COM, a sloupec Výjimky, který zobrazuje poslední výjimku vyvolanou ve vlákně.

Možnost -live zobrazí vlákna přidružená k živému vláknu.

Možnost -special zobrazí všechna speciální vlákna vytvořená clR. Speciální vlákna zahrnují vlákna uvolňování paměti (v souběžných a serverových uvolňování paměti), pomocné vlákna ladicího programu, finalizační vlákna, AppDomain uvolnit vlákna a vlákna časovače fondu vláken.
Pole State State ThreadState <> Zobrazí stav vlákna. Parametr value je hodnota State pole ve výstupu sestavy Threads .

Příklad:

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
Název souboru traverseHeap [-xml] <> Zapíše informace o haldě do zadaného souboru ve formátu srozumitelném pro profiler modulu CLR. Možnost -xml způsobí , že příkaz TraverseHeap formátuje soubor jako XML.
U [-gcinfo] [-ehinfo] [-n]< Adresa> MethodDesc | <Adresa kódu> Zobrazí překlad poznámek spravované metody určené ukazatelem MethodDesc struktury metody nebo adresou kódu v těle metody. Příkaz U zobrazí celou metodu od začátku do konce s poznámkami, které převádějí tokeny metadat na názvy.

Parametr -gcinfo způsobí, že příkaz U zobrazí GCInfo strukturu pro metodu.

Možnost -ehinfo zobrazí informace o výjimce pro metodu. Tyto informace můžete získat také pomocí příkazu EHInfo .

Možnost -n zakáže zobrazení názvů zdrojových souborů a čísel řádků. Pokud má ladicí program zadánu možnost SYMOPT_LOAD_LINES, bude nástroj SOS vyhledávat symboly pro každý spravovaný rámec a v případě úspěchu zobrazí odpovídající název zdrojového souboru a číslo řádku. Toto chování můžete zakázat zadáním parametru -n .
VerifyHeap Zkontroluje, zda halda systému uvolňování paměti vykazuje známky poškození a zobrazí všechny nalezené chyby.

Poškození haldy může být způsobeno voláními vyvolání platformy, která nejsou správně vytvořena.
Adresa objektu VerifyObj<> Zkontroluje, zda objekt, který je předán jako argument, jeví známky poškození.
Vmmap Projde prostor virtuálních adres a zobrazí typy ochran aplikované na jednotlivé oblasti.
VMStat Poskytuje souhrnné zobrazení prostoru virtuálních adres, seřazených podle typů ochran aplikovaných na danou paměť (volná, rezervovaná, potvrzená, soukromá, mapovaná, bitová kopie). Sloupec TOTAL obsahuje hodnotu ze sloupce AVERAGE vynásobenou hodnotou ze sloupce BLK COUNT.

Poznámky

Rozšíření ladění SOS umožňuje zobrazit informace o kódu, který běží uvnitř CLR. Nástroj SOS Debugging Extension lze například použít k zobrazení informací o spravované haldě, vyhledání poškození haldy, zobrazení vnitřních datových typů používaných modulem runtime a zobrazení informací o spravovaném kódu běžícím uvnitř modulu runtime.

Chcete-li použít rozšíření ladění SOS v sadě Visual Studio, nainstalujte sadu Windows Driver Kit (WDK). Informace o integrovaném prostředí ladění v sadě Visual Studio naleznete v tématu Ladění prostředí.

Rozšíření ladění SOS můžete použít také tak, že ho načtete do WinDbg.exe ladicího programu a spustíte příkazy v rámci WinDbg.exe.

K načtení nástroje SOS Debugging Extension do ladicího programu WinDbg.exe je třeba v tomto nástroji zadat následující příkaz:

.loadby sos clr

Nástroj WinDbg.exe i sada Visual Studio používají verzi knihovny SOS.dll odpovídající aktuálně používané verzi knihovny Mscorwks.dll. Ve výchozím nastavení by měla být použita verze knihovny SOS.dll, která odpovídá aktuální verzi knihovny Mscorwks.dll.

Pro zpracování souboru výpisu paměti vytvořeného na jiném počítači je třeba se ujistit, že soubor Mscorwks.dll, který byl distribuován s instalací, je v cestě k symbolům, a že je načtena odpovídající verze knihovny SOS.dll.

Pro načtení konkrétní verze knihovny SOS.dll je třeba do ladicího programu systému Windows zadat následující příkaz:

.load <full path to sos.dll>

Příklady

Následující příkaz zobrazí obsah pole na adrese 00ad28d0. Zobrazí se druhý prvek a pět následujících.

!dumparray -start 2 -length 5 -detail 00ad28d0

Následující příkaz zobrazí obsah sestavení na adrese 1ca248.

!dumpassembly 1ca248

Následující příkaz zobrazí informace o haldě systému uvolňování paměti.

!dumpheap

Následující příkaz zapíše obsah zátěžového protokolu z paměti do (výchozího) souboru s názvem StressLog.txt v aktuálním adresáři.

!DumpLog

Následující příkaz zobrazí MethodDesc strukturu na adrese 902f40.

!dumpmd 902f40

Následující příkaz zobrazí informace o modulu na adrese 1caa50.

!dumpmodule 1caa50

Následující příkaz zobrazí informace o objektu na adrese a79d40.

!DumpObj a79d40

Následující příkaz zobrazí pole třídy hodnot na adrese 00a79d9c pomocí tabulky metod na adrese 0090320c.

!DumpVC 0090320c 00a79d9c

Následující příkaz zobrazí paměť procesu využitou systémem uvolňování paměti.

!eeheap -gc

Následující příkaz zobrazí všechny objekty, které jsou naplánovány k dokončení.

!finalizequeue

Následující příkaz určuje doménu aplikace objektu na adrese 00a79d98.

!findappdomain 00a79d98

Následující příkaz zobrazí všechny popisovače systému uvolňování paměti v aktuálním procesu.

!gcinfo 5b68dbb8

Následující příkaz zobrazí MethodTable a EEClass struktury pro metodu Main ve třídě MainClass v modulu unittest.exe.

!name2ee unittest.exe MainClass.Main

Následující příkaz zobrazí informace o tokenu metadat na adrese 02000003 v modulu unittest.exe.

!token2ee unittest.exe 02000003

Viz také