SOS.dll (SOS-Debugerweiterung)SOS.dll (SOS Debugging Extension)

Die SOS-Debugerweiterung (SOS.dll) unterstützt Sie durch die Bereitstellung von Informationen zur internen Common Language Runtime-Umgebung (CLR) beim Debuggen von verwalteten Programmen in Visual Studio und im Windows-Debugger (WinDbg.exe).The SOS Debugging Extension (SOS.dll) helps you debug managed programs in Visual Studio and in the Windows debugger (WinDbg.exe) by providing information about the internal Common Language Runtime (CLR) environment. Für dieses Tool ist das Aktivieren von nicht verwaltetem Debuggen für Ihr Projekt erforderlich.This tool requires your project to have unmanaged debugging enabled. SOS.dll wird automatisch mit .NET Framework installiert.SOS.dll is automatically installed with the .NET Framework. Zum Verwenden von SOS.dll in Visual Studio installieren Sie das Windows-Treiberkit (WDK).To use SOS.dll in Visual Studio, install the Windows Driver Kit (WDK).

Hinweis

Wenn Sie Visual Studio 2013Visual Studio 2013 verwenden, wird "SOS.dll" im Windows-Debugger in Visual Studio unterstützt, jedoch nicht im Direktfenster des Visual Studio-Debuggers.If you are using Visual Studio 2013Visual Studio 2013, SOS.dll is supported in the Windows Debugger within Visual Studio, but not in the Immediate window of the Visual Studio debugger.

SyntaxSyntax

![command] [options]   

BefehleCommands

BefehlCommand descriptionDescription
AnalyzeOOM (ao)AnalyzeOOM (ao) Zeigt die Informationen zum letzten OOM-Ereignis an, das bei einer Speicherbelegungsanforderung an den Garbage Collection-Heap aufgetreten ist.Displays the information for the last OOM that occurred on an allocation request to the garbage collection heap. (Bei Garbage Collection auf einem Server wird ggf. für jeden Garbage Collection-Heap OOM angezeigt.)(In server garbage collection, it displays OOM, if any, on each garbage collection heap.)
BPMD [-nofuturemodule] [<Modulname> <Methodenname>] [-md <MethodDesc>] -list -clear <Ausstehende Haltepunktnummer> -clearallBPMD [-nofuturemodule] [<module name> <method name>] [-md <MethodDesc>] -list -clear <pending breakpoint number> -clearall Erstellt einen Haltepunkt bei der angegebenen Methode im angegebenen Modul.Creates a breakpoint at the specified method in the specified module.

Wenn das angegebene Modul und die entsprechende Methode nicht geladen wurden, wartet dieser Befehl vor dem Erstellen eines Haltepunkts auf die Benachrichtigung, dass das Modul geladen und JIT-kompiliert (Just-in-Time) wurde.If the specified module and method have not been loaded, this command waits for a notification that the module was loaded and just-in-time (JIT) compiled before creating a breakpoint.

Sie können die Liste der ausstehenden Haltepunkte mithilfe der Optionen -list, -clear und -clearall verwalten:You can manage the list of pending breakpoints by using the -list, -clear, and -clearall options:

Mit der Option -list wird eine Liste aller ausstehenden Haltepunkte generiert.The -list option generates a list of all the pending breakpoints. Wenn ein ausstehender Haltepunkt eine Modul-ID ungleich 0 (null) aufweist, ist dieser Haltepunkt für eine Funktion in diesem bestimmten geladenen Modul spezifisch.If a pending breakpoint has a non-zero module ID, that breakpoint is specific to a function in that particular loaded module. Wenn die Modul-ID eines ausstehenden Haltepunkts 0 (null) lautet, gilt dieser Haltepunkt für noch nicht geladene Module.If the pending breakpoint has a zero module ID, that breakpoint applies to modules that have not yet been loaded.

Verwenden Sie zum Entfernen ausstehender Haltepunkte aus der Liste die Option -clear oder die Option -clearall.Use the -clear or -clearall option to remove pending breakpoints from the list.
CLRStack [-a] [-l] [-p] [-n]CLRStack [-a] [-l] [-p] [-n] Stellt eine Stapelüberwachung ausschließlich für verwalteten Code bereit.Provides a stack trace of managed code only.

Mit der Option -p werden Argumente zur verwalteten Funktion angezeigt.The -p option shows arguments to the managed function.

Durch die Option -l werden Informationen zu lokalen Variablen in einem Frame angezeigt.The -l option shows information on local variables in a frame. Da von der SOS-Debugerweiterung keine lokalen Namen abgerufen werden können, weist die Ausgabe für lokale Namen das Format <lokale Adresse> = <Wert> auf.The SOS Debugging Extension cannot retrieve local names, so the output for local names is in the format <local address> = <value>.

Die Option -a (alles) kann als Kurzform für die Kombination von -l und -p verwendet werden.The -a(all) option is a shortcut for -l and -pcombined.

Durch die Option -n wird die Anzeige von Quelldateinamen und Zeilennummern deaktiviert.The -n option disables the display of source file names and line numbers. Wenn für den Debugger die SYMOPT_LOAD_LINES-Option angegeben wird, sucht SOS die Symbole aller verwalteten Frames und zeigt ggf. den entsprechenden Quelldateinamen und die Zeilennummer an.If the debugger has the option SYMOPT_LOAD_LINES specified, SOS will look up the symbols for every managed frame and if successful will display the corresponding source file name and line number. Der Parameter -n (keine Zeilennummern) kann angegeben werden, um dieses Verhalten zu deaktivieren.The -n (No line numbers) parameter can be specified to disable this behavior.

Auf x64- und IA-64-basierten Plattformen werden von der SOS-Debugerweiterung keine Übergangsframes angezeigt.The SOS Debugging Extension does not display transition frames on x64 and IA-64-based platforms.
COMStateCOMState Listet für jeden Thread das COM-Apartmentmodell und einen Context-Zeiger auf, falls verfügbar.Lists the COM apartment model for each thread and a Context pointer, if available.
DumpArray [-start <startIndex>] [-length <Länge>] [-details] [-nofields] <Arrayobjektadresse>DumpArray [-start <startIndex>] [-length <length>] [-details] [-nofields] <array object address>

- oder - -or-

DA [-start <startIndex>] [-length <Länge>] [-detail] [-nofields] Arrayobjektadresse>DA [-start <startIndex>] [-length <length>] [-detail] [-nofields] array object address>
Überprüft Elemente eines Arrayobjekts.Examines elements of an array object.

Die Option -start gibt den Startindex an, ab dem Elemente angezeigt werden sollen.The -start option specifies the starting index at which to display elements.

Die Option -length gibt an, wie viele Elemente angezeigt werden sollen.The -length option specifies how many elements to show.

Die Option -details zeigt mithilfe des DumpObj-Formats und des DumpVC-Formats Elementdetails an.The -details option displays details of the element using the DumpObj and DumpVC formats.

Die Option -nofields verhindert die Anzeige von Arrays.The -nofields option prevents arrays from displaying. Diese Option steht nur bei angegebener Option -detail zur Verfügung.This option is available only when the -detail option is specified.
DumpAssembly <Assemblyadresse>DumpAssembly <assembly address> Zeigt Informationen zu einer Assembly an.Displays information about an assembly.

Falls vorhanden, werden durch den Befehl DumpAssembly mehrere Module aufgelistet.The DumpAssembly command lists multiple modules, if they exist.

Mit dem Befehl DumpDomain kann eine Assemblyadresse abgerufen werden.You can get an assembly address by using the DumpDomain command.
DumpClass <EEClass-Adresse>DumpClass <EEClass address> Zeigt Informationen zu der einem Typ zugeordneten EEClass-Struktur an.Displays information about the EEClass structure associated with a type.

Mit dem Befehl DumpClass werden statische, jedoch keine nicht statischen Feldwerte angezeigt.The DumpClass command displays static field values but does not display nonstatic field values.

Verwenden Sie den Befehl DumpMT, DumpObj, Name2EE oder Token2EE, um eine EEClass-Strukturadresse abzurufen.Use the DumpMT, DumpObj, Name2EE, or Token2EE command to get an EEClass structure address.
DumpDomain [<Domänenadresse>]DumpDomain [<domain address>] Listet jedes innerhalb der angegebenen Assembly-Objektadresse geladene AppDomain-Objekt auf.Enumerates each Assembly object that is loaded within the specified AppDomain object address. Bei einem Aufruf ohne Parameter werden durch den DumpDomain-Befehl alle AppDomain-Objekte in einem Prozess aufgelistet.When called with no parameters, the DumpDomain command lists all AppDomain objects in a process.
DumpHeap [-stat] [-strings] [-short] [-min <size>] [-max <size>] [-thinlock] [-startAtLowerBound] [-mt <MethodTable-Adresse>] [-type <partieller Typname>][start [end]]DumpHeap [-stat] [-strings] [-short] [-min <size>] [-max <size>] [-thinlock] [-startAtLowerBound] [-mt <MethodTable address>] [-type <partial type name>][start [end]] Zeigt Informationen zum Garbage Collector-Heap und Auflistungsstatistiken zu Objekten an.Displays information about the garbage-collected heap and collection statistics about objects.

Durch den Befehl DumpHeap wird bei übermäßiger Fragmentierung im Garbage Collector-Heap eine Warnung angezeigt.The DumpHeap command displays a warning if it detects excessive fragmentation in the garbage collector heap.

Mit der Option -stat wird die Ausgabe auf eine statistische Zusammenfassung von Typen eingeschränkt.The -stat option restricts the output to the statistical type summary.

Mit der Option -strings wird die Ausgabe auf eine statistische Zusammenfassung von Zeichenfolgewerten eingeschränkt.The -strings option restricts the output to a statistical string value summary.

Mit der Option -short wird nur die Adresse jedes Objekts ausgegeben.The -short option limits output to just the address of each object. Damit können Sie die Ausgabe des Befehls zwecks Automatisierung einfach über die Pipeline an einen anderen Debuggerbefehl übergeben.This lets you easily pipe output from the command to another debugger command for automation.

Mit der Option -min werden Objekte ignoriert, die kleiner als der in Bytes angegebene size-Parameter sind.The -min option ignores objects that are less than the size parameter, specified in bytes.

Mit der Option -max werden Objekte ignoriert, die größer als der in Bytes angegebene size-Parameter sind.The -max option ignores objects that are larger than the size parameter, specified in bytes.

Mit der Option -thinlock werden ThinLocks gemeldet.The -thinlock option reports ThinLocks. Weitere Informationen finden Sie im Abschnitt zum Befehl SyncBlk.For more information, see the SyncBlk command.

Mit der -startAtLowerBound-Option wird der Beginn des Heap-Walks an der Untergrenze eines angegebenen Adressbereichs erzwungen.The -startAtLowerBound option forces the heap walk to begin at the lower bound of a supplied address range. Während der Planungsphase sind Heap-Walks oft nicht möglich, da Objekte verschoben werden.During the planning phase, the heap is often not walkable because objects are being moved. Diese Option erzwingt den Beginn des Heap-Walks mit DumpHeap an der angegebenen Untergrenze.This option forces DumpHeap to begin its walk at the specified lower bound. Sie müssen die Adresse eines gültigen Objekts als Untergrenze angeben, damit diese Option funktioniert.You must supply the address of a valid object as the lower bound for this option to work. Sie können den Arbeitsspeicher bei der Adresse eines ungültigen Objekts anzeigen, um die nächste Methodentabelle manuell zu suchen.You can display memory at the address of a bad object to manually find the next method table. Wenn für die Garbage Collection gerade ein Aufruf von memcopy ausgeführt wird, können Sie die Adresse des nächsten Objekts möglicherweise ebenfalls ermitteln, indem Sie der Startadresse die als Parameter angegebene Größe hinzufügen.If the garbage collection is currently in a call to memcopy, you may also be able to find the address of the next object by adding the size to the start address, which is supplied as a parameter.

Mit der Option -mt werden nur die Objekte aufgelistet, die der angegebenen MethodTable-Struktur entsprechen.The -mt option lists only those objects that correspond to the specified MethodTable structure.

Mit der Option -type werden nur die Objekte aufgelistet, deren Typname einer Teilzeichenfolge der angegebenen Zeichenfolge entspricht.The -type option lists only those objects whose type name is a substring match of the specified string.

Durch den start-Parameter wird die Auflistung bei der angegebenen Adresse gestartet.The start parameter begins listing from the specified address.

Durch den end-Parameter wird die Auflistung bei der angegebenen Adresse beendet.The end parameter stops listing at the specified address.
DumpIL <Managed DynamicMethod-Objekt> | <DynamicMethodDesc-Zeiger> | <MethodDesc-Zeiger>DumpIL <Managed DynamicMethod object> | <DynamicMethodDesc pointer> | <MethodDesc pointer> Zeigt die Microsoft Intermediate Language (MSIL) an, die einer verwalteten Methode zugeordnet ist.Displays the Microsoft intermediate language (MSIL) that is associated with a managed method.

Beachten Sie, dass zwischen dynamischer MSIL und aus einer Assembly geladener MSIL Unterschiede bestehen.Note that dynamic MSIL is emitted differently than MSIL that is loaded from an assembly. Dynamische MSIL verweist anstelle von Metadatentoken auf Objekte in einem verwalteten Objektarray.Dynamic MSIL refers to objects in a managed object array rather than to metadata tokens.
DumpLog [-addr <addressOfStressLog>] [<Filenamee>]DumpLog [-addr <addressOfStressLog>] [<Filename>] Schreibt den Inhalt eines Belastungsprotokolls im Speicher in die angegebene Datei.Writes the contents of an in-memory stress log to the specified file. Ohne Angabe eines Namens wird durch diesen Befehl die Datei "StressLog.txt" im aktuellen Verzeichnis erstellt.If you do not specify a name, this command creates a file called StressLog.txt in the current directory.

Mithilfe des Belastungsprotokolls im Speicher können Belastungsfehler diagnostiziert werden, ohne Sperren oder I/O zu verwenden.The in-memory stress log helps you diagnose stress failures without using locks or I/O. Zum Aktivieren des Belastungsprotokolls legen Sie unter „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework“ die folgenden Registrierungsschlüssel fest:To enable the stress log, set the following registry keys under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework:

(DWORD) StressLog = 1(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536(DWORD) StressLogSize = 65536

Mit der optionalen -addr-Option können Sie ein anderes Belastungsprotokoll als das Standardprotokoll angeben.The optional -addr option lets you specify a stress log other than the default log.
DumpMD <MethodDesc-Adresse>DumpMD <MethodDesc address> Zeigt Informationen zu einer MethodDesc-Struktur bei der angegebenen Adresse an.Displays information about a MethodDesc structure at the specified address.

Die MethodDesc-Strukturadresse kann mithilfe des Befehls IP2MD von einer verwalteten Funktion abgerufen werden.You can use the IP2MD command to get the MethodDesc structure address from a managed function.
DumpMT [-MD] <MethodTable-Adresse>DumpMT [-MD] <MethodTable address> Zeigt Informationen zu einer Methodentabelle bei der angegebenen Adresse an.Displays information about a method table at the specified address. Durch Angabe der Option -MD wird eine Liste aller mit dem Objekt definierten Methoden angezeigt.Specifying the -MD option displays a list of all methods defined with the object.

Jedes verwaltete Objekt enthält einen Methodentabellenzeiger.Each managed object contains a method table pointer.
DumpMethodSig <Signaturadresse> <Moduladresser>DumpMethodSig <sigaddr> <moduleaddr> Zeigt Informationen zu einer MethodSig-Struktur bei der angegebenen Adresse an.Displays information about a MethodSig structure at the specified address.
DumpModule [-mt] <Moduladresse>DumpModule [-mt] <Module address> Zeigt Informationen zu einem Modul bei der angegebenen Adresse an.Displays information about a module at the specified address. Mit der Option -mt werden sowohl die in einem Modul definierten und als auch die Typen angezeigt, auf die vom Modul verwiesen wird.The -mt option displays the types defined in a module and the types referenced by the module

Die Adresse eines Moduls kann mithilfe des DumpDomain-Befehls oder DumpAssembly-Befehls abgerufen werden.You can use the DumpDomain or DumpAssembly command to retrieve a module's address.
DumpObj [-nofields] <Objektadresse>DumpObj [-nofields] <object address>

- oder - -or-

DO <Objektadresse>DO <object address>
Zeigt Informationen zu einem Objekt bei der angegebenen Adresse an.Displays information about an object at the specified address. Durch den Befehl DumpObj werden die Felder, die EEClass-Strukturinformationen, die Methodentabelle und die Größe des Objekts angezeigt.The DumpObj command displays the fields, the EEClass structure information, the method table, and the size of the object.

Die Adresse eines Objekts kann mithilfe des Befehls DumpStackObjects abgerufen werden.You can use the DumpStackObjects command to retrieve an object's address.

Beachten Sie, dass der Befehl DumpObj für Felder vom Typ CLASS ausgeführt werden kann, da es sich bei diesen ebenfalls um Objekte handelt.Note that you can run the DumpObj command on fields of type CLASS because they are also objects.

Mit der Option -nofields kann die Anzeige von Feldern des Objekts verhindert werden. Dies ist beispielsweise bei Objekten wie „String“ nützlich.The -nofields option prevents fields of the object being displayed, it is useful for objects like String.
DumpRuntimeTypesDumpRuntimeTypes Zeigt die Laufzeittypobjekte im Garbage Collector-Heap an und listet die zugehörigen Typnamen sowie Methodentabellen auf.Displays the runtime type objects in the garbage collector heap and lists their associated type names and method tables.
DumpStack [-EE] [-n] [top-Stapel [bottom-Stapelk]]DumpStack [-EE] [-n] [top stack [bottom stack]] Zeigt eine Stapelüberwachung an.Displays a stack trace.

Mit der Option -EE werden durch den Befehl DumpStack nur verwaltete Funktionen angezeigt.The -EE option causes the DumpStack command to display only managed functions. Verwenden Sie den top-Parameter und den bottom-Parameter, um die auf x86-Plattformen angezeigten Stapelrahmen einzuschränken.Use the top and bottom parameters to limit the stack frames displayed on x86 platforms.

Durch die Option -n wird die Anzeige von Quelldateinamen und Zeilennummern deaktiviert.The -n option disables the display of source file names and line numbers. Wenn für den Debugger die SYMOPT_LOAD_LINES-Option angegeben wird, sucht SOS die Symbole aller verwalteten Frames und zeigt ggf. den entsprechenden Quelldateinamen und die Zeilennummer an.If the debugger has the option SYMOPT_LOAD_LINES specified, SOS will look up the symbols for every managed frame and if successful will display the corresponding source file name and line number. Der Parameter -n (keine Zeilennummern) kann angegeben werden, um dieses Verhalten zu deaktivieren.The -n (No line numbers) parameter can be specified to disable this behavior.

Auf x86- und x64-Plattformen wird durch den Befehl DumpStack eine ausführliche Stapelüberwachung erstellt.On x86 and x64 platforms, the DumpStack command creates a verbose stack trace.

Auf IA-64-basierten Plattformen wird durch Befehl DumpStack der Befehl K des Debuggers imitiert.On IA-64-based platforms, the DumpStack command mimics the debugger's K command. Der top- Parameter und der bottom-Parameter werden auf IA-64-basierten Plattformen ignoriert.The top and bottom parameters are ignored on IA-64-based platforms.
DumpSig <Signaturadresse> <Moduladresse>DumpSig <sigaddr> <moduleaddr> Zeigt Informationen zu einer Sig-Struktur bei der angegebenen Adresse an.Displays information about a Sig structure at the specified address.
DumpSigElem <Signaturadresse> <Moduladresse>DumpSigElem <sigaddr> <moduleaddr> Zeigt ein einzelnes Element eines Signaturobjekts an.Displays a single element of a signature object. In den meisten Fällen sollten Sie einzelne Signaturobjekte mithilfe von DumpSig anzeigen.In most cases, you should use DumpSig to look at individual signature objects. Wenn eine Signatur jedoch irgendwie beschädigt wurde, können mithilfe von DumpSigElem die gültigen Teile ausgelesen werden.However, if a signature has been corrupted in some way, you can use DumpSigElem to read the valid portions of it.
DumpStackObjects [-verify] [top-Stapel [bottom-Stapel]]DumpStackObjects [-verify] [top stack [bottom stack]]

- oder - -or-

DSO [-verify] [top-Stapel [bottom-Stapel]]DSO [-verify] [top stack [bottom stack]]
Zeigt alle innerhalb der Grenzen des aktuellen Stapels gefundenen verwalteten Objekte an.Displays all managed objects found within the bounds of the current stack.

Mit der Option -verify wird jedes nicht statische CLASS-Feld eines Objektfelds überprüft.The -verify option validates each non-static CLASS field of an object field.

Verwenden Sie den Befehl DumpStackObject mit Stapelüberwachungsbefehlen, z.B. dem K-Befehl und dem CLRStack-Befehl, um die Werte lokaler Variablen und Parameter zu ermitteln.Use the DumpStackObject command with stack tracing commands such as the K command and the CLRStack command to determine the values of local variables and parameters.
DumpVC <MethodTable-Adresse> <Adresse>DumpVC <MethodTable address> <Address> Zeigt Informationen zu den Feldern einer Wertklasse bei der angegebenen Adresse an.Displays information about the fields of a value class at the specified address.

Mit dem Parameter MethodTable können Felder durch den Befehl DumpVC ordnungsgemäß interpretiert werden.The MethodTable parameter allows the DumpVC command to correctly interpret fields. Beim ersten Feld von Wertklassen handelt es sich nicht um eine Methodentabelle.Value classes do not have a method table as their first field.
EEHeap [-gc] [-loader]EEHeap [-gc] [-loader] Zeigt Informationen zu dem von internen CLR-Datenstrukturen verwendeten Prozessspeicher an.Displays information about process memory consumed by internal CLR data structures.

Mit den Optionen -gc und -loader wird die Ausgabe dieses Befehls auf Garbage Collector- oder Ladeprogrammdatenstrukturen begrenzt.The -gc and -loader options limit the output of this command to garbage collector or loader data structures.

In den Garbage Collector-Informationen werden die Bereiche jedes Segments im verwalteten Heap aufgelistet.The information for the garbage collector lists the ranges of each segment in the managed heap. Wenn der Zeiger in einem durch -gc angegebenen Segmentbereich liegt, handelt es sich um einen Objektzeiger.If the pointer falls within a segment range given by -gc, the pointer is an object pointer.
EEStack [-short] [-EE]EEStack [-short] [-EE] Führt den Befehl DumpStack für alle Threads des Prozesses aus.Runs the DumpStack command on all threads in the process.

Die Option -EE wird direkt an den Befehl DumpStack übergeben.The -EE option is passed directly to the DumpStack command. Mit dem Parameter -short wird die Ausgabe auf folgende Arten von Threads begrenzt:The -short parameter limits the output to the following kinds of threads:

Gesperrte ThreadsThreads that have taken a lock.

Zwecks Ausführung einer Garbage Collection verzögerte ThreadsThreads that have been stalled in order to allow a garbage collection.

Threads, die sich derzeit in verwaltetem Code befindenThreads that are currently in managed code.
EEVersionEEVersion Zeigt die CLR-Version an.Displays the CLR version.
EHInfo [<MethodDesc-Adresse>] [<Codeadresse>]EHInfo [<MethodDesc address>] [<Code address>] Zeigt die Ausnahmebehandlungsblöcke in einer angegebenen Methode an.Displays the exception handling blocks in a specified method. Durch diesen Befehl werden die Codeadressen und Codeoffsets für den Klauselblock (den try-Block) und den Handlerblock (den catch-Block) angezeigt.This command displays the code addresses and offsets for the clause block (the try block) and the handler block (the catch block).
FAQFAQ Zeigt häufig gestellte Fragen (FAQs) an.Displays frequently asked questions.
FinalizeQueue [-detail] | [-allReady] [-short]FinalizeQueue [-detail] | [-allReady] [-short] Zeigt alle für den Abschluss registrierten Objekte an.Displays all objects registered for finalization.

Mit der Option -detail werden zusätzliche Informationen zu allen zu bereinigenden SyncBlocks sowie zu allen RuntimeCallableWrappers (RCWs) angezeigt, die auf eine Bereinigung warten.The -detail option displays extra information about any SyncBlocks that need to be cleaned up, and any RuntimeCallableWrappers (RCWs) that await cleanup. Beide Datenstrukturen werden zwischengespeichert und bei der Ausführung des Finalizer-Threads bereinigt.Both of these data structures are cached and cleaned up by the finalizer thread when it runs.

Mit der -allReady-Option werden alle zum Abschluss bereiten Objekte angezeigt, unabhängig davon, ob diese bereits entsprechend von der Garbage Collection markiert wurden oder bei der nächsten Garbage Collection markiert werden.The -allReady option displays all objects that are ready for finalization, regardless of whether they are already marked by the garbage collection as such, or will be marked by the next garbage collection. Bei den nicht in der Liste der zum Abschluss bereiten Objekte aufgeführten Objekte handelt es sich um finalisierbare Objekte, die keinen Stamm mehr aufweisen.The objects that are in the "ready for finalization" list are finalizable objects that are no longer rooted. Diese Option kann sehr viel Leistung beanspruchen, da überprüft wird, ob alle Objekte in den finalisierbaren Warteschlangen immer noch über einen Stamm verfügen.This option can be very expensive, because it verifies whether all the objects in the finalizable queues are still rooted.

Mit der -short-Option wird die Ausgabe auf die Adresse jedes Objekts begrenzt.The -short option limits the output to the address of each object. In Verbindung mit -allReady werden alle Objekte aufgelistet, die über einen Finalizer, jedoch nicht über einen Stamm verfügen.If it is used in conjunction with -allReady, it enumerates all objects that have a finalizer that are no longer rooted. Bei unabhängiger Verwendung werden alle Objekte in den finalisierbaren und als zum Abschluss bereit markierten Warteschlangen aufgelistet.If it is used independently, it lists all objects in the finalizable and "ready for finalization" queues.
FindAppDomain <Objektadresse>FindAppDomain <Object address> Ermittelt die Anwendungsdomäne eines Objekts bei der angegebenen Adresse.Determines the application domain of an object at the specified address.
FindRoots -gen <N> | -gen any |<Objektadresse>FindRoots -gen <N> | -gen any |<object address> Bewirkt, dass der Debugger bei der zu debuggenden Komponente in der nächsten Auflistung der angegebenen Generierung angehalten wird.Causes the debugger to break in the debuggee on the next collection of the specified generation. Der Effekt wird zurückgesetzt, sobald die Unterbrechung auftritt.The effect is reset as soon as the break occurs. Zum Anhalten in der nächsten Auflistung muss der Befehl erneut angegeben werden.To break on the next collection, you have to reissue the command. Die <Objektadresse>-Form dieses Befehls wird nach der von -gen oder -gen any ausgelösten Unterbrechung verwendet.The <object address> form of this command is used after the break caused by the -gen or -gen any has occurred. Zu diesem Zeitpunkt weist die zu debuggende Komponente den richtigen Zustand für FindRoots auf, um Stämme für Objekte aus den aktuell verurteilten Generierungen zu identifizieren.At that time, the debuggee is in the right state for FindRoots to identify roots for objects from the current condemned generations.
GCHandles [-perdomain]GCHandles [-perdomain] Zeigt Statistiken über Garbage Collector-Handles im Prozess an.Displays statistics about garbage collector handles in the process.

Mit der Option -perdomain werden die Statistiken nach Anwendungsdomäne sortiert.The -perdomain option arranges the statistics by application domain.

Durch den Befehl GCHandles werden von Garbage Collector-Handleverlusten verursachte Speicherverluste gesucht.Use the GCHandles command to find memory leaks caused by garbage collector handle leaks. Beispielsweise tritt ein Speicherverlust auf, wenn im Code ein großes Array beibehalten wird, da ein starkes Garbage Collector-Handle noch darauf verweist, und das Handle ohne Freigabe des Arrays verworfen wird.For example, a memory leak occurs when code retains a large array because a strong garbage collector handle still points to it, and the handle is discarded without freeing it.
GCHandleLeaksGCHandleLeaks Durchsucht den Speicher nach Verweisen auf starke und fixierte Garbage Collector-Handles im Prozess und zeigt die Ergebnisse an.Searches memory for any references to strong and pinned garbage collector handles in the process and displays the results. Durch den Befehl GCHandleLeaks wird die Adresse des Verweises angezeigt, wenn ein Handle gefunden wird.If a handle is found, the GCHandleLeaks command displays the address of the reference. Wenn im Speicher kein Handle gefunden wird, wird durch diesen Befehl eine Benachrichtigung angezeigt.If a handle is not found in memory, this command displays a notification.
GCInfo <MethodDesc-Adresse><Codeadresse>GCInfo <MethodDesc address><Code address> Zeigt Daten an, die angeben, ob Register oder Stapelspeicherorte verwaltete Objekte aufweisen.Displays data that indicates when registers or stack locations contain managed objects. Beim Ausführen einer Garbage Collection muss der Garbage Collector über Informationen zu den Speicherorten von Verweisen auf Objekte verfügen, damit diese mit neuen Objektzeigerwerten aktualisiert werden können.If a garbage collection occurs, the collector must know the locations of references to objects so it can update them with new object pointer values.
GCRoot [-nostacks] <Objektadresse>GCRoot [-nostacks] <Object address> Zeigt Informationen zu Verweisen auf ein Objekt (oder Stämmen eines Objekts) bei der angegebenen Adresse an.Displays information about references (or roots) to an object at the specified address.

Durch den Befehl GCRoot werden der gesamte verwaltete Heap und die Handletabelle nach Handles innerhalb anderer Objekte sowie Handles auf dem Stapel durchsucht.The GCRoot command examines the entire managed heap and the handle table for handles within other objects and handles on the stack. Anschließend werden jeder Stapel und die Finalizer-Warteschlange nach Objektzeigern durchsucht.Each stack is then searched for pointers to objects, and the finalizer queue is also searched.

Durch diesen Befehl wird nicht ermittelt, ob ein Stapelstamm gültig ist oder verworfen wurde.This command does not determine whether a stack root is valid or is discarded. Verwenden Sie die Befehle CLRStack und U zum Disassemblieren des Rahmens, zu dem der lokale oder der Argumentwert gehört, um zu ermitteln, ob der Stapelstamm noch verwendet wird.Use the CLRStack and U commands to disassemble the frame that the local or argument value belongs to in order to determine if the stack root is still in use.

Mit der Option -nostacks wird die Suche auf Garbage Collector-Handles und Freachable-Objekte begrenzt.The -nostacks option restricts the search to garbage collector handles and freachable objects.
GCWhere <Objektadresse>GCWhere <object address> Zeigt den Speicherort und die Größe im Garbage Collection-Heap des übergebenen Arguments an.Displays the location and size in the garbage collection heap of the argument passed in. Wenn sich das Argument im verwalteten Heap befindet, jedoch keine gültige Objektadresse darstellt, wird die Größe als 0 (Null) angezeigt.When the argument lies in the managed heap but is not a valid object address, the size is displayed as 0 (zero).
help [<Befehl>] [faq]help [<command>] [faq] Zeigt alle verfügbaren Befehle an, wenn kein Parameter angegeben wird. Andernfalls werden ausführliche Hilfeinformationen zum angegebenen Befehl angezeigt.Displays all available commands when no parameter is specified, or displays detailed help information about the specified command.

Mit dem faq-Parameter werden Antworten auf häufig gestellte Fragen angezeigt.The faq parameter displays answers to frequently asked questions.
HeapStat [-inclUnrooted | -iu]HeapStat [-inclUnrooted | -iu] Zeigt die Generierungsgrößen für jeden Heap und den gesamten freien Speicherplatz in jeder Generierung der einzelnen Heaps an.Displays the generation sizes for each heap and the total free space in each generation on each heap. Bei Angabe der Option -inclUnrooted enthält der Bericht Informationen zu den verwalteten Objekten aus dem Garbage Collection-Heap, der keinen Stamm mehr aufweist.If the -inclUnrooted option is specified, the report includes information about the managed objects from the garbage collection heap that is no longer rooted.
HistClearHistClear Gibt alle von der Familie der Hist-Befehle verwendeten Ressourcen frei.Releases any resources used by the family of Hist commands.

In der Regel muss HistClear nicht explizit aufgerufen werden, da jeder Aufruf von HistInit die vorherigen Ressourcen bereinigt.Generally, you do not have to explicitly call HistClear, because each HistInit cleans up the previous resources.
HistInitHistInit Initialisiert die SOS-Strukturen aus dem Belastungsprotokoll, die in der zu debuggenden Komponente gespeichert sind.Initializes the SOS structures from the stress log saved in the debuggee.
HistObj <obj_address>HistObj <obj_address> Untersucht alle Aufzeichnungen von Belastungsprotokollumsetzungen und zeigt die Kette von Garbage Collection-Umsetzungen an, die möglicherweise zu der als Argument übergebenen Adresse geführt haben.Examines all stress log relocation records and displays the chain of garbage collection relocations that may have led to the address passed in as an argument.
HistObjFind <obj_address>HistObjFind <obj_address> Zeigt alle Protokolleinträge an, die auf ein Objekt bei der angegebenen Adresse verweisen.Displays all the log entries that reference an object at the specified address.
HistRoot <root>HistRoot <root> Zeigt Informationen zu sowohl Heraufstufungen als auch Umsetzungen des angegebenen Stamms an.Displays information related to both promotions and relocations of the specified root.

Anhand des Stammwerts kann die Bewegung eines Objekts durch die Garbage Collections verfolgt werden.The root value can be used to track the movement of an object through the garbage collections.
IP2MD <Codeadresse>IP2MD <Code address> Zeigt die MethodDesc-Struktur bei der angegebenen Adresse in JIT (Just-In-Time)-kompiliertem Code an.Displays the MethodDesc structure at the specified address in code that has been JIT-compiled.
ListNearObj (lno) <obj_address>ListNearObj (lno) <obj_address> Zeigt die Objekte an, die der angegebenen Adresse vorausgehen und darauf folgen.Displays the objects preceding and following the specified address. Der Befehl sucht im Garbage Collection-Heap nach der Adresse, die wie ein gültiger Anfang eines verwalteten Objekts aussieht (auf Grundlage einer gültigen Methodentabelle), und nach dem Objekt, das der Argumentadresse folgt.The command looks for the address in the garbage collection heap that looks like a valid beginning of a managed object (based on a valid method table) and the object following the argument address.
MinidumpMode [0] [1]MinidumpMode [0] [1] Verhindert die Ausführung von unsicheren Befehlen bei einem Minidump.Prevents running unsafe commands when using a minidump.

Durch Übergabe von 0 wird diese Funktion deaktiviert und durch 1 aktiviert.Pass 0 to disable this feature or 1 to enable this feature. In der Standardeinstellung ist der Wert MinidumpMode auf 0 festgelegt.By default, the MinidumpMode value is set to 0.

Minidumps, die mit dem Befehl .dump /m oder dem Befehl .dump erstellt wurden, weisen eingeschränkte CLR-spezifische Daten auf. Daher können nur einige der SOS-Befehle ordnungsgemäß ausgeführt werden.Minidumps created with the .dump /m command or .dump command have limited CLR-specific data and allow you to run only a subset of SOS commands correctly. Bei einigen Befehlen können unerwartete Fehlern auftreten, da erforderliche Speicherbereiche nicht oder nur teilweise zugeordnet sind.Some commands may fail with unexpected errors because required areas of memory are not mapped or are only partially mapped. Mit dieser Option wird die Ausführung unsicherer Befehle bei Minidumps verhindert.This option protects you from running unsafe commands against minidumps.
Name2EE <Modulname> <Typ- oder Methodenname>Name2EE <module name> <type or method name>

- oder - -or-

Name2EE <Modulname>!<Typ- oder Methodenname>Name2EE <module name>!<type or method name>
Zeigt die MethodTable-Struktur und die EEClass-Struktur für den angegebenen Typ oder die angegebene Methode im angegebenen Modul an.Displays the MethodTable structure and EEClass structure for the specified type or method in the specified module.

Das angegebene Modul muss im Prozess geladen werden.The specified module must be loaded in the process.

Durchsuchen Sie das Modul mit dem Ildasm.exe (IL-Disassembler), um den richtigen Typnamen abzurufen.To get the proper type name, browse the module by using the Ildasm.exe (IL Disassembler). Sie können auch * als Modulnamensparameter übergeben, um alle geladenen verwalteten Module zu durchsuchen.You can also pass * as the module name parameter to search all loaded managed modules. Beim Parameter Modulname kann es sich auch um den Namen des Debuggers für ein Modul handeln, z.B. mscorlib oder image00400000.The module name parameter can also be the debugger's name for a module, such as mscorlib or image00400000.

Von diesem Befehl wird die Windows-Debuggersyntax <module>!<type> unterstützt.This command supports the Windows debugger syntax of <module>!<type>. Der Typ muss vollqualifiziert sein.The type must be fully qualified.
ObjSize [<Objektadresse>] | [-aggregate] [-stat]ObjSize [<Object address>] | [-aggregate] [-stat] Zeigt die Größe des angegebenen Objekts an.Displays the size of the specified object. Ohne Angabe von Parametern werden durch den Befehl ObjSize die Größe aller in verwalteten Threads gefundenen Objekte, alle Garbage Collector-Handles im Prozess sowie die Gesamtgröße aller Objekte angezeigt, auf die diese Handles verweisen.If you do not specify any parameters, the ObjSize command displays the size of all objects found on managed threads, displays all garbage collector handles in the process, and totals the size of any objects pointed to by those handles. Der Befehl ObjSize enthält neben der Größe des übergeordneten Elements auch die Größe aller untergeordneten Objekte.The ObjSize command includes the size of all child objects in addition to the parent.

In Verbindung mit dem Argument -stat kann mithilfe der Option -aggregate eine ausführliche Ansicht der Typen abgerufen werden, die immer noch über Stamm verfügen.The -aggregate option can be used in conjunction with the -stat argument to get a detailed view of the types that are still rooted. Mithilfe von !dumpheap -stat und !objsize -aggregate -stat können Objekte ohne Stamm ermittelt und verschiedene Arbeitsspeicherprobleme diagnostiziert werden.By using !dumpheap -stat and !objsize -aggregate -stat, you can determine which objects are no longer rooted and diagnose various memory issues.
PrintException [-nested] [-lines] [<Ausnahmeobjektadresse>]PrintException [-nested] [-lines] [<Exception object address>]

- oder - -or-

PE [-nested] [<Ausnahmeobjektadresse>]PE [-nested] [<Exception object address>]
Zeigt die Felder jedes Objekts an, das bei der angegebenen Adresse von der Exception-Klasse abgeleitet wird, und formatiert diese Felder.Displays and formats fields of any object derived from the Exception class at the specified address. Ohne Angabe einer Adresse wird durch den Befehl PrintException die letzte im aktuellen Thread ausgelöste Ausnahme angezeigt.If you do not specify an address, the PrintException command displays the last exception thrown on the current thread.

Mit der Option -nested werden Details zu geschachtelten Ausnahmeobjekten angezeigt.The -nested option displays details about nested exception objects.

Mit der Option -lines werden Quelleninformationen angezeigt, sofern verfügbar.The -lines option displays source information, if available.

Mithilfe dieses Befehls kann das _stackTrace-Feld formatiert und angezeigt werden, bei dem es sich um ein binäres Array handelt.You can use this command to format and view the _stackTrace field, which is a binary array.
ProcInfo [-env] [-time] [-mem]ProcInfo [-env] [-time] [-mem] Zeigt Umgebungsvariablen für den Prozess, die Kernel-CPU-Zeit und Speicherauslastungsstatistiken an.Displays environment variables for the process, kernel CPU time, and memory usage statistics.
RCWCleanupList <RCWCleanupList-Adresse>RCWCleanupList <RCWCleanupList address> Zeigt die Liste der Runtime Callable Wrapper bei der angegebenen Adresse an, die auf Bereinigung warten.Displays the list of runtime callable wrappers at the specified address that are awaiting cleanup.
SaveModule <Basisadresse> <Dateiname>SaveModule <Base address> <Filename> Schreibt ein Image, das bei der angegebenen Adresse in den Speicher geladen wird, in die angegebene Datei.Writes an image, which is loaded in memory at the specified address, to the specified file.
SOSFlushSOSFlush Leert einen internen SOS-Cache.Flushes an internal SOS cache.
StopOnException [-derived] [-create | -create2] <Ausnahme> <Pseudo-Registernummer>StopOnException [-derived] [-create | -create2] <Exception> <Pseudo-register number> Bewirkt, dass der Debugger bei Auslösung der angegebenen Ausnahme unterbrochen, bei allen anderen Ausnahmen jedoch weiter ausgeführt wird.Causes the debugger to stop when the specified exception is thrown, but to continue running when other exceptions are thrown.

Mit der Option -derived werden die angegebene Ausnahme sowie alle davon abgeleiteten Ausnahmen abgefangen.The -derived option catches the specified exception and every exception that derives from the specified exception.
SyncBlk [-all | <syncblk-Zahl>]SyncBlk [-all | <syncblk number>] Zeigt die angegebene SyncBlock-Struktur oder alle SyncBlock-Strukturen an.Displays the specified SyncBlock structure or all SyncBlock structures. Ohne Übergabe von Argumenten wird durch den Befehl SyncBlk die SyncBlock-Struktur angezeigt, die Objekten im Besitz von Threads entspricht.If you do not pass any arguments, the SyncBlk command displays the SyncBlock structure corresponding to objects that are owned by a thread.

Bei einer SyncBlock-Struktur handelt es sich um einen Container für zusätzliche Informationen, der nicht für jedes Objekt erstellt werden muss.A SyncBlock structure is a container for extra information that does not need to be created for every object. Der Container kann COM-Interop-Daten, Hashcodes und Sperreninformationen für threadsichere Vorgänge enthalten.It can hold COM interop data, hash codes, and locking information for thread-safe operations.
ThreadPoolThreadPool Zeigt Informationen zum verwalteten Threadpool an, darunter die Anzahl der Arbeitsanforderungen in der Warteschlange, der Abschlussanschlussthreads und der Timer.Displays information about the managed thread pool, including the number of work requests in the queue, the number of completion port threads, and the number of timers.
Token2EE <Modulname> <Token>Token2EE <module name> <token> Wandelt das angegebene Metadatentoken im angegebenen Modul in eine MethodTable-Struktur oder MethodDesc-Struktur um.Turns the specified metadata token in the specified module into a MethodTable structure or MethodDesc structure.

Durch Angabe von * als Modulnamensparameter kann ermittelt werden, welchem Element in jedem geladenen verwalteten Modul dieses Token zugeordnet ist.You can pass * for the module name parameter to find what that token maps to in every loaded managed module. Alternativ kann auch der Name des Debuggers für ein Modul übergeben werden, z. B. mscorlib oder image00400000.You can also pass the debugger's name for a module, such as mscorlib or image00400000.
Threads [-live] [-special]Threads [-live] [-special] Zeigt alle verwalteten Threads im Prozess an.Displays all managed threads in the process.

Durch den Befehl Threads werden die Kurzform der Debugger-ID sowie die Thread-ID der CLR und des Betriebssystems angezeigt.The Threads command displays the debugger shorthand ID, the CLR thread ID, and the operating system thread ID. Darüber hinaus werden durch den Befehl Threads eine Domänenspalte mit der Anwendungsdomäne, in der der Thread ausgeführt wird, eine APT-Spalte mit dem COM-Apartmentmodus und eine Ausnahmespalte mit der letzten im Thread ausgelösten Ausnahme angezeigt.Additionally, the Threads command displays a Domain column that indicates the application domain in which a thread is executing, an APT column that displays the COM apartment mode, and an Exception column that displays the last exception thrown in the thread.

Mit der Option -live werden zu einem aktiven Thread gehörende Threads angezeigt.The -live option displays threads associated with a live thread.

Mit der Option -special werden alle von der CLR erstellten besonderen Threads angezeigt.The -special option displays all special threads created by the CLR. Zu den besonderen Threads gehören Garbage Collection-Threads (in der gleichzeitigen und der Server-Garbage Collection), Hilfsthreads des Debuggers, Finalizer-Threads, AppDomain-Entladungsthreads sowie Timerthreads des Threadpools.Special threads include garbage collection threads (in concurrent and server garbage collection), debugger helper threads, finalizer threads, AppDomain unload threads, and thread pool timer threads.
ThreadState < Zustandswertfeld * **>ThreadState <* State value field > Zeigt den Zustand des Threads an.Displays the state of the thread. Beim Parameter value handelt es sich um den Wert des Felds State in der Threads-Berichtsausgabe.The value parameter is the value of the State field in the Threads report output.

Beispiel:Example:

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] <Dateiname>TraverseHeap [-xml] <filename> Schreibt Heapinformationen in einem vom CLR-Profiler lesbaren Format in die angegebene Datei.Writes heap information to the specified file in a format understood by the CLR profiler. Mit der Option -xml wird die Datei durch den Befehl TraverseHeap in XML formatiert.The -xml option causes the TraverseHeap command to format the file as XML.

Der CLR-Profiler kann im Microsoft Download Center heruntergeladen werden.You can download the CLR Profiler from the Microsoft Download Center.
U [-gcinfo] [-ehinfo] [-n] <MethodDesc-Adresse> | <Codeadresse>U [-gcinfo] [-ehinfo] [-n] <MethodDesc address> | <Code address> Zeigt eine mit Anmerkungen versehene Disassembly einer verwalteten Methode an, die durch einen MethodDesc-Strukturzeiger für die Methode oder durch eine Codeadresse im Methodentext angegeben wird.Displays an annotated disassembly of a managed method specified either by a MethodDesc structure pointer for the method or by a code address within the method body. Durch den Befehl U wird die gesamte Methode mit Anmerkungen angezeigt, die Metadatentoken in Namen umwandeln.The U command displays the entire method from start to finish, with annotations that convert metadata tokens to names.

Mit der Option -gcinfo wird durch den Befehl U die GCInfo-Struktur für die Methode angezeigt.The -gcinfo option causes the U command to display the GCInfo structure for the method.

Mit der Option -ehinfo werden Ausnahmeinformationen für die Methode angezeigt.The -ehinfo option displays exception information for the method. Sie können diese Informationen auch mit dem Befehl EHInfo abrufen.You can also obtain this information with the EHInfo command.

Durch die Option -n wird die Anzeige von Quelldateinamen und Zeilennummern deaktiviert.The -n option disables the display of source file names and line numbers. Wenn für den Debugger die SYMOPT_LOAD_LINES-Option angegeben ist, sucht SOS nach den Symbolen für jeden verwalteten Frame und zeigt ggf. den entsprechenden Quelldateinamen und die Zeilennummer an.If the debugger has the option SYMOPT_LOAD_LINES specified, SOS looks up the symbols for every managed frame and, if successful, displays the corresponding source file name and line number. Mit der Option -n wird dieses Verhalten deaktiviert.You can specify the -n option to disable this behavior.
VerifyHeapVerifyHeap Überprüft den Garbage Collector-Heap auf Anzeichen von Beschädigung und zeigt alle gefundenen Fehler an.Checks the garbage collector heap for signs of corruption and displays any errors found.

Heapbeschädigungen können von nicht ordnungsgemäß erstellten Plattformaufrufen verursacht werden.Heap corruptions can be caused by platform invoke calls that are constructed incorrectly.
VerifyObj <Objektadresse>VerifyObj <object address> Überprüft das Objekt, das als Argument für Anzeichen für Beschädigungen übergeben wird.Checks the object that is passed as an argument for signs of corruption.
VMMapVMMap Durchläuft den virtuellen Adressenbereich und zeigt den Typ des Schutzes an, der auf jeden Bereich angewendet wird.Traverses the virtual address space and displays the type of protection applied to each region.
VMStatVMStat Bietet eine Zusammenfassungsansicht des virtuellen Adressbereichs, geordnet nach allen Arten des Schutzes für den Speicher (frei, reserviert, zugesichert, privat, zugeordnet, Image).Provides a summary view of the virtual address space, ordered by each type of protection applied to that memory (free, reserved, committed, private, mapped, image). Die Spalte TOTAL zeigt das Ergebnis der Spalte AVERAGE multipliziert mit der Spalte BLK COUNT an.The TOTAL column displays the result of the AVERAGE column multiplied by the BLK COUNT column.

HinweiseRemarks

Die SOS-Debugerweiterung ermöglicht die Anzeige von Informationen zu dem Code, der in der CLR ausgeführt wird.The SOS Debugging Extension lets you view information about code that is running inside the CLR. Mithilfe der SOS-Debugerweiterung können beispielsweise Informationen zum verwalteten Heap angezeigt, nach Heapbeschädigungen gesucht, von der Runtime verwendete interne Datentypen angezeigt sowie Informationen zu jeglichem verwalteten Code angezeigt werden, der innerhalb der Runtime ausgeführt wird.For example, you can use the SOS Debugging Extension to display information about the managed heap, look for heap corruptions, display internal data types used by the runtime, and view information about all managed code running inside the runtime.

Zum Verwenden der SOS-Debugerweiterung in Visual Studio installieren Sie das Windows-Treiberkit (WDK).To use the SOS Debugging Extension in Visual Studio, install the Windows Driver Kit (WDK). Informationen zur integrierten Debugumgebung von Visual Studio finden Sie unter Debugging Environments im Windows Developer Center.For information about the integrated debugging environment in Visual Studio, see Debugging Environments in the Windows Dev Center.

Sie können die SOS-Debugerweiterung auch in den WinDbg.exe-Debugger laden (verfügbar auf der WDK und Entwicklertool-Website), und in WinDbg.exe Befehle ausführen.You can also use the SOS Debugging Extension by loading it into the WinDbg.exe debugger, which is available from the WDK and Developer Tools Web site, and executing commands within WinDbg.exe.

Zum Laden der SOS-Debugerweiterungen in den WinDbg.exe-Debugger führen Sie im Tool den folgenden Befehl aus:To load the SOS Debugging Extension into the WinDbg.exe debugger, run the following command in the tool:

.loadby sos clr  

WinDbg.exe und Visual Studio verwenden eine Version von SOS.dll, die der derzeit verwendeten Version von Mscorwks.dll entspricht.WinDbg.exe and Visual Studio use a version of SOS.dll that corresponds to the version of Mscorwks.dll currently in use. In .NET Framework, Versionen 1.1 und 2.0, wird SOS.dll in demselben Verzeichnis wie Mscorwks.dll installiert.In versions 1.1 and 2.0 of the .NET Framework, SOS.dll is installed in the same directory as Mscorwks.dll. Standardmäßig sollten Sie die Version von SOS.dll verwenden, die der aktuellen Version von Mscorwks.dll entspricht.By default, you should use the version of SOS.dll that matches the current version of Mscorwks.dll.

Wenn Sie eine Dumpdatei verwenden möchten, die auf einem anderen Computer erstellt wurde, vergewissern Sie sich, dass sich die Mscorwks.dll-Datei aus dieser Installation im Symbolpfad befindet, und laden Sie dann die entsprechende Version von SOS.dll.To use a dump file created on another computer, make sure that the Mscorwks.dll file that came with that installation is in your symbol path, and load the corresponding version of SOS.dll.

Zum Laden einer bestimmten Version von SOS.dll geben Sie im Windows-Debugger den folgenden Befehl ein:To load a specific version of SOS.dll, type the following command into the Windows Debugger:

.load <full path to sos.dll>  

BeispieleExamples

Durch den folgenden Befehl wird der Inhalt eines Arrays bei der Adresse 00ad28d0 angezeigt.The following command displays the contents of an array at the address 00ad28d0. Die Anzeige beginnt beim zweiten Element und wird für fünf Elemente fortgesetzt.The display starts from the second element and continues for five elements.

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

Durch den folgenden Befehl wird der Inhalt einer Assembly bei der Adresse 1ca248 angezeigt.The following command displays the contents of an assembly at the address 1ca248.

!dumpassembly 1ca248  

Durch den folgenden Befehl werden Informationen zum Garbage Collector-Heap angezeigt.The following command displays information about the garbage collector heap.

!dumpheap  

Durch den folgenden Befehl wird der Inhalt des Belastungsprotokolls im Speicher (standardmäßig) in die Datei "StressLog.txt" im aktuellen Verzeichnis geschrieben.The following command writes the contents of the in-memory stress log to a (default) file called StressLog.txt in the current directory.

!DumpLog  

Durch den folgenden Befehl wird die MethodDesc-Struktur bei der Adresse 902f40 angezeigt.The following command displays the MethodDesc structure at the address 902f40.

!dumpmd 902f40  

Durch den folgenden Befehl werden Informationen zu einem Modul bei der Adresse 1caa50 angezeigt.The following command displays information about a module at the address 1caa50.

!dumpmodule 1caa50  

Durch den folgenden Befehl werden Informationen zu einem Objekt bei der Adresse a79d40 angezeigt.The following command displays information about an object at the address a79d40.

!DumpObj a79d40  

Durch den folgende Befehlen werden die Felder einer Wertklasse bei der Adresse 00a79d9c angezeigt, wobei die Methodentabelle bei der Adresse 0090320c verwendet wird.The following command displays the fields of a value class at the address 00a79d9c using the method table at the address 0090320c.

!DumpVC 0090320c 00a79d9c  

Durch den folgenden Befehl wird der vom Garbage Collector verwendete Prozessspeicher angezeigt.The following command displays the process memory used by the garbage collector.

!eeheap -gc  

Durch den folgenden Befehl werden alle Objekte angezeigt, für die der Abschluss geplant ist.The following command displays all objects scheduled for finalization.

!finalizequeue  

Durch den folgenden Befehl wird die Anwendungsdomäne eines Objekts bei der Adresse 00a79d98 ermittelt.The following command determines the application domain of an object at the address 00a79d98.

!findappdomain 00a79d98  

Durch den folgenden Befehl werden alle Garbage Collector-Handles im aktuellen Prozess angezeigt.The following command displays all garbage collector handles in the current process.

!gcinfo 5b68dbb8   

Durch den folgenden Befehl werden die MethodTable-Struktur und die EEClass-Struktur für die Main-Methode in der Klasse MainClass im unittest.exe-Modul angezeigt.The following command displays the MethodTable and EEClass structures for the Main method in the class MainClass in the module unittest.exe.

!name2ee unittest.exe MainClass.Main  

Durch den folgenden Befehl werden Informationen zum Metadatentoken bei der Adresse 02000003 im unittest.exe-Modul angezeigt.The following command displays information about the metadata token at the address 02000003 in the module unittest.exe.

!token2ee unittest.exe 02000003  

Siehe auchSee Also

ExtrasTools
EingabeaufforderungenCommand Prompts