SOS.dll (extension de débogage SOS)SOS.dll (SOS debugging extension)

L’extension de débogage SOS (SOS.dll) vous aide à déboguer des programmes managés dans le débogueur Windows (WinDbg.exe) et dans Visual Studio en vous fournissant des informations sur l’environnement interne du CLR (Common Language Runtime).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. Cet outil requiert l'activation du débogage non managé pour votre projet.This tool requires your project to have unmanaged debugging enabled. SOS.dll est installé automatiquement avec .NET Framework.SOS.dll is automatically installed with the .NET Framework. Pour utiliser SOS.dll dans Visual Studio, installez le Kit WDK (Windows Driver Kit).To use SOS.dll in Visual Studio, install the Windows Driver Kit (WDK).

SyntaxeSyntax

![command] [options]

CommandesCommands

CommandeCommand DescriptionDescription
AnalyzeOOM (ao)AnalyzeOOM (ao) Affiche les informations pour le dernier événement Mémoire insuffisante (OOM) qui s’est produit sur une demande d’allocation au tas de garbage collection.Displays the information for the last out of memory (OOM) that occurred on an allocation request to the garbage collection heap. (Dans le garbage collection côté serveur, il affiche OOM, le cas échéant, sur chaque tas de garbage collection.)(In server garbage collection, it displays OOM, if any, on each garbage collection heap.)
BPMD [-nofuturemodule] [<module name> <method name>] [-md <MethodDesc>] -list -clear <pending breakpoint number> -clearallBPMD [-nofuturemodule] [<module name> <method name>] [-md <MethodDesc>] -list -clear <pending breakpoint number> -clearall Crée un point d'arrêt sur la méthode spécifiée dans le module spécifié.Creates a breakpoint at the specified method in the specified module.

Si le module et la méthode spécifiés n'ont pas été chargés, cette commande attend une notification indiquant que le module a été chargé et compilé juste-à-temps avant de créer un point d'arrêt.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.

Vous pouvez gérer la liste de points d’arrêt en attente à l’aide des options -list, -clear et -clearall :You can manage the list of pending breakpoints by using the -list, -clear, and -clearall options:

L’option -list génère une liste de tous les points d’arrêt en attente.The -list option generates a list of all the pending breakpoints. Si un point d'arrêt en attente a un ID de module non nul, ce point d'arrêt est spécifique à une fonction dans ce module spécifique chargé.If a pending breakpoint has a non-zero module ID, that breakpoint is specific to a function in that particular loaded module. Si le point d'arrêt en attente a un ID de module nul, ce point d'arrêt s'applique aux modules qui n'ont pas encore été chargés.If the pending breakpoint has a zero module ID, that breakpoint applies to modules that have not yet been loaded.

Utilisez l’option -clear ou -clearall pour supprimer des points d’arrêt en attente dans la liste.Use the -clear or -clearall option to remove pending breakpoints from the list.
CLRStack [-a] [-l] [-p] [-n]CLRStack [-a] [-l] [-p] [-n] Fournit uniquement une trace de la pile du code managé.Provides a stack trace of managed code only.

L’option -p fournit les arguments à la fonction managée.The -p option shows arguments to the managed function.

L’option -l fournit des informations sur les variables locales dans un frame.The -l option shows information on local variables in a frame. Comme l’extension de débogage SOS ne peut pas récupérer les noms locaux, la sortie retournée pour les noms locaux est au format <local address> = <value>.The SOS Debugging Extension cannot retrieve local names, so the output for local names is in the format <local address> = <value>.

L’option -a(tout) est un raccourci de la combinaison de -l et -p.The -a(all) option is a shortcut for -l and -p combined.

L’option -n désactive l’affichage des noms de fichier source et des numéros de ligne.The -n option disables the display of source file names and line numbers. Si l'option SYMOPT_LOAD_LINES est spécifiée sur le débogueur, SOS recherche les symboles pour chaque frame managé et, s'il les trouve, affiche le nom de fichier source et le numéro de ligne correspondants.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. Le paramètre -n (aucun numéro de ligne) peut être spécifié pour désactiver ce comportement.The -n (No line numbers) parameter can be specified to disable this behavior.

L’extension de débogage SOS n’affiche pas de frames de transition sur les plateformes x64 et IA-64.The SOS Debugging Extension does not display transition frames on x64 and IA-64-based platforms.
COMStateCOMState Répertorie le modèle cloisonné COM pour chaque thread et un pointeur Context, si disponible.Lists the COM apartment model for each thread and a Context pointer, if available.
DumpArray [-start <startIndex>] [-length <length>] [-details] [-nofields] <array object address>DumpArray [-start <startIndex>] [-length <length>] [-details] [-nofields] <array object address>

- ou --or-

DA [-start <startIndex>] [-length <length>] [-detail] [-nofields] array object address>DA [-start <startIndex>] [-length <length>] [-detail] [-nofields] array object address>
Examine les éléments d'un objet tableau.Examines elements of an array object.

L’option -start spécifie l’index de départ à partir duquel les éléments doivent être affichés.The -start option specifies the starting index at which to display elements.

L’option -length spécifie le nombre d’éléments à afficher.The -length option specifies how many elements to show.

L’option -details affiche les détails de l’élément en utilisant les formats DumpObj et DumpVC.The -details option displays details of the element using the DumpObj and DumpVC formats.

L’option -nofields empêche l’affichage des tableaux.The -nofields option prevents arrays from displaying. Cette option est disponible uniquement quand l’option -detail est spécifiée.This option is available only when the -detail option is specified.
DumpAssembly <assembly address>DumpAssembly <assembly address> Affiche des informations concernant un assembly.Displays information about an assembly.

La commande DumpAssembly répertorie plusieurs modules, s’ils existent.The DumpAssembly command lists multiple modules, if they exist.

Vous pouvez obtenir une adresse d’assembly à l’aide de la commande DumpDomain.You can get an assembly address by using the DumpDomain command.
DumpClass <EEClass address>DumpClass <EEClass address> Affiche des informations sur la structure EEClass associée à un type.Displays information about the EEClass structure associated with a type.

La commande DumpClass affiche des valeurs de champ static, mais pas les valeurs de champ non static.The DumpClass command displays static field values but does not display nonstatic field values.

Utilisez la commande DumpMT, DumpObj, Name2EE ou Token2EE pour obtenir une adresse de structure EEClass.Use the DumpMT, DumpObj, Name2EE, or Token2EE command to get an EEClass structure address.
DumpDomain [<domain address>]DumpDomain [<domain address>] Répertorie chaque objet Assembly chargé dans l'adresse d'objet AppDomain spécifiée.Enumerates each Assembly object that is loaded within the specified AppDomain object address. En cas d’appel sans paramètres, la commande DumpDomain répertorie tous les objets AppDomain dans un processus.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 address>] [-type <partial type name>][start [end]]DumpHeap [-stat] [-strings] [-short] [-min <size>] [-max <size>] [-thinlock] [-startAtLowerBound] [-mt <MethodTable address>] [-type <partial type name>][start [end]] Affiche des informations sur le tas récupéré par le récupérateur de mémoire et des statistiques de collection concernant les objets.Displays information about the garbage-collected heap and collection statistics about objects.

La commande DumpHead affiche un avertissement si elle détecte une fragmentation excessive dans le tas de récupérateur de mémoire.The DumpHeap command displays a warning if it detects excessive fragmentation in the garbage collector heap.

L’option -stat restreint la sortie au récaptitulatif de type statistique.The -stat option restricts the output to the statistical type summary.

L’option -string restreint la sortie à un récapitulatif de la valeur de la chaîne statistique.The -strings option restricts the output to a statistical string value summary.

L’option -short limite la sortie à l’adresse de chaque objet.The -short option limits output to just the address of each object. Cela vous permet de canaliser facilement une sortie depuis la commande vers une autre commande de débogueur pour l'automation.This lets you easily pipe output from the command to another debugger command for automation.

L’option -min ignore les objets inférieurs au paramètre size, spécifié en octets.The -min option ignores objects that are less than the size parameter, specified in bytes.

L’option -max ignore les objets inférieurs au paramètre size, spécifié en octets.The -max option ignores objects that are larger than the size parameter, specified in bytes.

L’option -thinlock indique ThinLocks.The -thinlock option reports ThinLocks. Pour plus d’informations, consultez la commande SyncBlk.For more information, see the SyncBlk command.

L'option -startAtLowerBound force le parcours du segment de mémoire à commencer à la limite inférieure d'une plage d'adresses fournie.The -startAtLowerBound option forces the heap walk to begin at the lower bound of a supplied address range. Pendant la phase de planification, le tas n'est pas souvent opérationnel parce que des objets sont déplacés.During the planning phase, the heap is often not walkable because objects are being moved. Cette option force DumpHead à commencer son parcours à la limite inférieure spécifiée.This option forces DumpHeap to begin its walk at the specified lower bound. Vous devez fournir l'adresse d'un objet valide comme limite inférieure pour que cette option fonctionne.You must supply the address of a valid object as the lower bound for this option to work. Vous pouvez afficher la mémoire à l'adresse d'un mauvais objet pour rechercher manuellement la table de méthodes suivante.You can display memory at the address of a bad object to manually find the next method table. Si le garbage collection est actuellement en communication avec memcopy, vous pouvez également rechercher l'adresse de l'objet suivant en ajoutant la taille à l'adresse de démarrage, qui est fournie comme paramètre.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.

L’option -mt répertorie uniquement les objets qui correspondent à la structure MethodTable spécifiée.The -mt option lists only those objects that correspond to the specified MethodTable structure.

L’option -type répertorie uniquement les objets dont le nom de type correspond à une sous-chaîne de la chaîne spécifiée.The -type option lists only those objects whose type name is a substring match of the specified string.

Le paramètre start commence à répertorier les éléments à partir de l'adresse spécifiée.The start parameter begins listing from the specified address.

Le paramètre end cesse de répertorier les éléments à l'adresse spécifiée.The end parameter stops listing at the specified address.
DumpIL <Managed DynamicMethod object> | <DynamicMethodDesc pointer> | <MethodDesc pointer>DumpIL <Managed DynamicMethod object> | <DynamicMethodDesc pointer> | <MethodDesc pointer> Affiche le Microsoft Intermediate Language (MSIL) associé à une méthode managée.Displays the Microsoft intermediate language (MSIL) that is associated with a managed method.

Notez que le langage MSIL dynamique est émis différemment du langage MSIL chargé à partir d'un assembly.Note that dynamic MSIL is emitted differently than MSIL that is loaded from an assembly. Le langage MSIL dynamique fait référence aux objets d'un tableau d'objets managés plutôt qu'aux jetons de métadonnées.Dynamic MSIL refers to objects in a managed object array rather than to metadata tokens.
DumpLog [-addr <addressOfStressLog>] [<Filename>]DumpLog [-addr <addressOfStressLog>] [<Filename>] Écrit le contenu d'un journal de contrainte en mémoire dans le fichier spécifié.Writes the contents of an in-memory stress log to the specified file. Si vous ne spécifiez pas de nom, cette commande crée un fichier appelé StressLog.txt dans le répertoire actif.If you do not specify a name, this command creates a file called StressLog.txt in the current directory.

Le journal de contrainte en mémoire vous aide à diagnostiquer les échecs de contrainte sans utiliser de verrous ou d'E/S.The in-memory stress log helps you diagnose stress failures without using locks or I/O. Pour activer le journal de contrainte, définissez les clés de Registre suivantes sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework :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

L'option -addr facultative vous permet de spécifier un journal de contrainte autre que le journal par défaut.The optional -addr option lets you specify a stress log other than the default log.
DumpMD <MethodDesc address>DumpMD <MethodDesc address> Affiche des informations sur une structure MethodDesc à l'adresse spécifiée.Displays information about a MethodDesc structure at the specified address.

Vous pouvez utiliser la commande IP2MD pour obtenir l’adresse de structure MethodDesc d’une fonction managée.You can use the IP2MD command to get the MethodDesc structure address from a managed function.
DumpMT [-MD] <MethodTable address>DumpMT [-MD] <MethodTable address> Affiche des informations sur une table de méthodes à l'adresse spécifiée.Displays information about a method table at the specified address. Quand l’option -MD est spécifiée, une liste de toutes les méthodes définies avec l’objet s’affiche.Specifying the -MD option displays a list of all methods defined with the object.

Chaque objet managé contient un pointeur de table de méthodes.Each managed object contains a method table pointer.
DumpMethodSig <sigaddr> <moduleaddr>DumpMethodSig <sigaddr> <moduleaddr> Affiche des informations sur une structure MethodSig à l'adresse spécifiée.Displays information about a MethodSig structure at the specified address.
DumpModule [-mt] <Module address>DumpModule [-mt] <Module address> Affiche des informations sur un module à l'adresse spécifiée.Displays information about a module at the specified address. L’option -mt affiche les types définis dans un module et les types référencés par le moduleThe -mt option displays the types defined in a module and the types referenced by the module

Vous pouvez utiliser la commande DumpDomain ou DumpAssembly pour récupérer l’adresse d’un module.You can use the DumpDomain or DumpAssembly command to retrieve a module's address.
DumpObj [-nofields] <object address>DumpObj [-nofields] <object address>

- ou --or-

DO <object address>DO <object address>
Affiche des informations sur un objet à l'adresse spécifiée.Displays information about an object at the specified address. La commande DumpObj affiche les champs, les informations de la structure EEClass, la table de méthodes et la taille de l’objet.The DumpObj command displays the fields, the EEClass structure information, the method table, and the size of the object.

Vous pouvez utiliser la commande DumpStackObjects pour récupérer l’adresse d’un objet.You can use the DumpStackObjects command to retrieve an object's address.

Notez que vous pouvez exécuter la commande DumpObj dans les champs de type CLASS, car ce sont également des objets.Note that you can run the DumpObj command on fields of type CLASS because they are also objects.

L’option -nofields empêche l’affichage des champs de l’objet, ce qui est utile pour des objets comme String.The -nofields option prevents fields of the object being displayed, it is useful for objects like String.
DumpRuntimeTypesDumpRuntimeTypes Affiche les objets de type au moment de l'exécution dans le tas de récupérateur de mémoire et répertorie leurs noms de types et tables de méthodes associés.Displays the runtime type objects in the garbage collector heap and lists their associated type names and method tables.
DumpStack [-EE] [-n] [top stack [bottom stack]]DumpStack [-EE] [-n] [top stack [bottom stack]] Affiche une trace de la pile.Displays a stack trace.

Quand l’option -EE est spécifiée, la commande DumpStack affiche uniquement les fonctions managées.The -EE option causes the DumpStack command to display only managed functions. Utilisez les paramètres top et bottom pour limiter les frames de pile affichés sur les plateformes x86.Use the top and bottom parameters to limit the stack frames displayed on x86 platforms.

L’option -n désactive l’affichage des noms de fichier source et des numéros de ligne.The -n option disables the display of source file names and line numbers. Si l'option SYMOPT_LOAD_LINES est spécifiée sur le débogueur, SOS recherche les symboles pour chaque frame managé et, s'il les trouve, affiche le nom de fichier source et le numéro de ligne correspondants.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. Le paramètre -n (aucun numéro de ligne) peut être spécifié pour désactiver ce comportement.The -n (No line numbers) parameter can be specified to disable this behavior.

Sur les plateformes x86 et x64, la commande DumpStack crée une trace de pile détaillée.On x86 and x64 platforms, the DumpStack command creates a verbose stack trace.

Sur les plateformes IA-64, la commande DumpStack reproduit la commande K du débogueur.On IA-64-based platforms, the DumpStack command mimics the debugger's K command. Les paramètres top et bottom sont ignorés sur les plateformes IA-64.The top and bottom parameters are ignored on IA-64-based platforms.
DumpSig <sigaddr> <moduleaddr>DumpSig <sigaddr> <moduleaddr> Affiche des informations sur une structure Sig à l'adresse spécifiée.Displays information about a Sig structure at the specified address.
DumpSigElem <sigaddr> <moduleaddr>DumpSigElem <sigaddr> <moduleaddr> Affiche un élément unique d'un objet de signature.Displays a single element of a signature object. Dans la plupart des cas, vous devez utiliser DumpSig pour examiner des objets de signature individuels.In most cases, you should use DumpSig to look at individual signature objects. Toutefois, si une signature est endommagée, vous pouvez utiliser DumpSigElem pour lire ses parties valides.However, if a signature has been corrupted in some way, you can use DumpSigElem to read the valid portions of it.
DumpStackObjects [-verify] [top stack [bottom stack]]DumpStackObjects [-verify] [top stack [bottom stack]]

- ou --or-

DSO [-verify] [top stack [bottom stack]]DSO [-verify] [top stack [bottom stack]]
Affiche tous les objets managés recherchés dans les limites de la pile actuelle.Displays all managed objects found within the bounds of the current stack.

L’option -verify valide chaque champ CLASS non static d’un champ d’objet.The -verify option validates each non-static CLASS field of an object field.

Utilisez la commande DumpStackObject avec les commandes de traçage de la pile, comme la commande K et la commande CLRStack, pour déterminer les valeurs des variables et paramètres locaux.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 address> <Address>DumpVC <MethodTable address> <Address> Affiche des informations sur les champs d'une classe de valeur à l'adresse spécifiée.Displays information about the fields of a value class at the specified address.

Le paramètre MethodTable permet à la commande DumpVC d’interpréter correctement les champs.The MethodTable parameter allows the DumpVC command to correctly interpret fields. Les classes de valeur ne disposent pas d'une table de méthodes comme premier champ.Value classes do not have a method table as their first field.
EEHeap [-gc] [-loader]EEHeap [-gc] [-loader] Affiche des informations sur la mémoire du processus consommée par les structures de données internes du CLR.Displays information about process memory consumed by internal CLR data structures.

Les options -gc et -loader limitent la sortie de cette commande aux structures de données du récupérateur de mémoire ou du chargeur.The -gc and -loader options limit the output of this command to garbage collector or loader data structures.

Les informations pour le récupérateur de mémoire répertorient les plages de chaque segment dans le tas managé.The information for the garbage collector lists the ranges of each segment in the managed heap. Si le pointeur se trouve dans une plage de segments spécifiée par -gc, il s’agit d’un pointeur d’objet.If the pointer falls within a segment range given by -gc, the pointer is an object pointer.
EEStack [-short] [-EE]EEStack [-short] [-EE] Exécute la commande DumpStack sur tous les threads dans le processus.Runs the DumpStack command on all threads in the process.

L’option -EE est passée directement à la commande DumpStack.The -EE option is passed directly to the DumpStack command. Le paramètre -short limite la sortie aux types de threads suivants :The -short parameter limits the output to the following kinds of threads:

Threads avec un verrou.Threads that have taken a lock.

Threads bloqués pour permettre un garbage collection.Threads that have been stalled in order to allow a garbage collection.

Threads se trouvant actuellement dans le code managé.Threads that are currently in managed code.
EEVersionEEVersion Affiche la version du CLR.Displays the CLR version.
EHInfo [<MethodDesc address>] [<Code address>]EHInfo [<MethodDesc address>] [<Code address>] Affiche les blocs de gestion des exceptions dans une méthode spécifiée.Displays the exception handling blocks in a specified method. Cette commande affiche les adresses de code et les offsets du bloc de clause (bloc try) et du bloc de gestionnaire (bloc catch).This command displays the code addresses and offsets for the clause block (the try block) and the handler block (the catch block).
FAQFAQ Affiche les questions fréquemment posées.Displays frequently asked questions.
FinalizeQueue [-detail] | [-allReady] [-short]FinalizeQueue [-detail] | [-allReady] [-short] Affiche tous les objets enregistrés pour la finalisation.Displays all objects registered for finalization.

L’option -detail affiche des informations supplémentaires sur les SyncBlocks qui doivent être nettoyés, ainsi que sur les RuntimeCallableWrappers (RCW) en attente de nettoyage.The -detail option displays extra information about any SyncBlocks that need to be cleaned up, and any RuntimeCallableWrappers (RCWs) that await cleanup. Ces deux structures de données sont mises en cache et nettoyées par le thread finaliseur lorsqu'il est exécuté.Both of these data structures are cached and cleaned up by the finalizer thread when it runs.

L'option -allReady affiche tous les objets prêts pour la finalisation, qu'ils soient déjà marqués comme tel par le garbage collection ou qu'ils le soient par le garbage collection suivant.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. Les objets qui ne figurent pas dans la liste "prêt pour la finalisation" sont des objets finalisables qui ne sont plus associés à une racine.The objects that are in the "ready for finalization" list are finalizable objects that are no longer rooted. Cette option peut s'avérer très coûteuse, car elle vérifie si tous les objets des files d'attente finalisables sont toujours associés à une racine.This option can be very expensive, because it verifies whether all the objects in the finalizable queues are still rooted.

L'option -short limite la sortie à l'adresse de chaque objet.The -short option limits the output to the address of each object. Si elle est utilisée conjointement à -allReady, elle énumère tous les objets qui ont un finaliseur qui n’est plus associé à une racine.If it is used in conjunction with -allReady, it enumerates all objects that have a finalizer that are no longer rooted. S'il est utilisé indépendamment, il répertorie tous les objets dans les files d'attente finalisables et "prêtes pour la finalisation".If it is used independently, it lists all objects in the finalizable and "ready for finalization" queues.
FindAppDomain <Object address>FindAppDomain <Object address> Détermine le domaine d'application d'un objet à l'adresse spécifiée.Determines the application domain of an object at the specified address.
FindRoots -gen <N> | -gen any |<object address>FindRoots -gen <N> | -gen any |<object address> Provoque l’arrêt du débogueur dans l’élément débogué sur la collection suivante de la génération spécifiée.Causes the debugger to break in the debuggee on the next collection of the specified generation. L'effet est réinitialisé dès que l'arrêt se produit.The effect is reset as soon as the break occurs. Pour arrêter la collection suivante, vous devez rééditer la commande.To break on the next collection, you have to reissue the command. La forme <object address> de cette commande est utilisée après l’arrêt provoqué par -gen ou -gen any.The <object address> form of this command is used after the break caused by the -gen or -gen any has occurred. À cet instant, l’élément débogué est dans l’état nécessaire pour que FindRoots identifie des racines pour les objets à partir des générations condamnées actuelles.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] Affiche des statistiques sur les handles du récupérateur de mémoire dans le processus.Displays statistics about garbage collector handles in the process.

L’option -perdomain organise les statistiques par domaine d’application.The -perdomain option arranges the statistics by application domain.

Utilisez la commande GCHandles pour rechercher les fuites de mémoire provoquées par les fuites du handle du récupérateur de mémoire.Use the GCHandles command to find memory leaks caused by garbage collector handle leaks. Par exemple, une fuite de mémoire se produit lorsque le code conserve un grand tableau, car un handle fort du récupérateur de mémoire pointe encore sur ce dernier ; le handle est ignoré sans libérer le tableau.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 Recherche dans la mémoire des références à des handles forts et épinglés du récupérateur de mémoire dans le processus et affiche les résultats.Searches memory for any references to strong and pinned garbage collector handles in the process and displays the results. Si un handle est trouvé, la commande GCHandleLeaks affiche l’adresse de la référence.If a handle is found, the GCHandleLeaks command displays the address of the reference. Si aucun handle n'est trouvé dans la mémoire, cette commande affiche une notification.If a handle is not found in memory, this command displays a notification.
GCInfo <MethodDesc address><Code address>GCInfo <MethodDesc address><Code address> Affiche les données spécifiant les registres ou les emplacements de pile contenant des objets managés.Displays data that indicates when registers or stack locations contain managed objects. Si un garbage collection a lieu, le collector doit connaître les emplacements des références aux objets pour pouvoir les mettre à jour avec les nouvelles valeurs de pointeur d’objet.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] <Object address>GCRoot [-nostacks] <Object address> Affiche des informations sur les références (ou racines) à un objet à l'adresse spécifiée.Displays information about references (or roots) to an object at the specified address.

La commande GCRoot examine le tas managé tout entier et la table des handles d’autres objets et des handles de la pile.The GCRoot command examines the entire managed heap and the handle table for handles within other objects and handles on the stack. Une recherche des pointeurs vers les objets est ensuite réalisée dans chaque pile et dans la file d'attente du finaliseur.Each stack is then searched for pointers to objects, and the finalizer queue is also searched.

Cette commande ne détermine pas si la racine d'une pile est valide ou ignorée.This command does not determine whether a stack root is valid or is discarded. Utilisez les commandes CLRStack et U pour désassembler le frame auquel appartient la valeur locale ou d’argument, pour déterminer si la racine d’une pile est encore utilisée.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.

L’option -nostacks restreint la recherche aux handles du récupérateur de mémoire et aux objets accessibles.The -nostacks option restricts the search to garbage collector handles and freachable objects.
GCWhere <object address>GCWhere <object address> Affiche l’emplacement et la taille dans le tas de garbage collection de l’argument passé.Displays the location and size in the garbage collection heap of the argument passed in. Lorsque l’argument se trouve dans le tas managé, mais n’est pas une adresse d’objet valide, la taille s’affiche en tant que 0 (zéro).When the argument lies in the managed heap but is not a valid object address, the size is displayed as 0 (zero).
help [<command>] [faq]help [<command>] [faq] Affiche toutes les commandes disponibles lorsque aucun paramètre n'est spécifié ou affiche des informations d'aide détaillées sur la commande spécifiée.Displays all available commands when no parameter is specified, or displays detailed help information about the specified command.

Le paramètre faq affiche les réponses aux questions fréquentes.The faq parameter displays answers to frequently asked questions.
HeapStat [-inclUnrooted | -iu]HeapStat [-inclUnrooted | -iu] Affiche les tailles de génération pour chaque tas et l'espace libre total dans chaque génération sur chaque tas.Displays the generation sizes for each heap and the total free space in each generation on each heap. Si l’option -inclUnrooted est spécifiée, le rapport inclut des informations sur les objets managés du tas de garbage collection qui n’est plus associé à une racine.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 Libère toutes les ressources utilisées par la famille de commandes Hist.Releases any resources used by the family of Hist commands.

En général, vous n'avez pas à appeler HistClearexplicitement, parce que chaque HistInit nettoie les ressources précédentes.Generally, you do not have to explicitly call HistClear, because each HistInit cleans up the previous resources.
HistInitHistInit Initialise les structures SOS du journal de contrainte enregistré dans l’élément débogué.Initializes the SOS structures from the stress log saved in the debuggee.
HistObj <obj_address>HistObj <obj_address> Examine tous les enregistrements de réadressage du journal de contrainte et affiche la chaîne des réadressages de garbage collection qui ont pu mener à l’adresse passée comme un argument.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> Affiche toutes les entrées de journal qui référencent un objet à l'adresse spécifiée.Displays all the log entries that reference an object at the specified address.
HistRoot <root>HistRoot <root> Affiche les informations liées aux promotions et aux réadressages de la racine spécifiée.Displays information related to both promotions and relocations of the specified root.

La valeur racine peut être utilisée pour suivre le déplacement d’un objet dans les garbage collections.The root value can be used to track the movement of an object through the garbage collections.
IP2MD <Code address>IP2MD <Code address> Affiche la structure MethodDesc à l'adresse spécifiée dans le code compilé juste-à-temps (JIT).Displays the MethodDesc structure at the specified address in code that has been JIT-compiled.
ListNearObj (lno) <obj_address>ListNearObj (lno) <obj_address> Affiche les objets précédant et suivant l'adresse spécifiée.Displays the objects preceding and following the specified address. La commande recherche dans le tas de garbage collection l’adresse qui ressemble à un début valide d’objet managé (selon une table de méthodes valide), ainsi que l’objet qui suit l’adresse d’argument.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] Empêche l'exécution de commandes potentiellement dangereuses lors de l'utilisation d'un minidump.Prevents running unsafe commands when using a minidump.

Passez 0 pour désactiver cette fonctionnalité ou 1 pour l’activer.Pass 0 to disable this feature or 1 to enable this feature. Par défaut, la valeur de MinidumpMode est 0.By default, the MinidumpMode value is set to 0.

Les minidumps créés avec la commande .dump /m ou .dump ont des données propres à CLR limitées et vous permettent uniquement d’exécuter correctement un sous-ensemble de commandes SOS.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. Certaines commandes peuvent échouer avec des erreurs inattendues, car des zones de mémoire requises ne sont pas mappées ou ne sont mappées que partiellement.Some commands may fail with unexpected errors because required areas of memory are not mapped or are only partially mapped. Cette option vous empêche d'exécuter des commandes potentiellement dangereuses dans les minidumps.This option protects you from running unsafe commands against minidumps.
Name2EE <nom du module> <nom du type ou de la méthode>Name2EE <module name> <type or method name>

- ou --or-

Name2EE <nom du module>!<nom du type ou de la méthode>Name2EE <module name>!<type or method name>
Affiche la structure MethodTable et la structure EEClass pour le type ou la méthode spécifié dans le module spécifié.Displays the MethodTable structure and EEClass structure for the specified type or method in the specified module.

Le module spécifié doit être chargé dans le processus.The specified module must be loaded in the process.

Pour obtenir le nom de type correct, parcourez le module à l’aide de Ildasm.exe (désassembleur IL).To get the proper type name, browse the module by using the Ildasm.exe (IL Disassembler). Vous pouvez également passer * en tant que paramètre de nom de module pour rechercher tous les modules managés chargés.You can also pass * as the module name parameter to search all loaded managed modules. Le paramètre module name peut également correspondre au nom du débogueur pour un module, comme mscorlib ou image00400000.The module name parameter can also be the debugger's name for a module, such as mscorlib or image00400000.

Cette commande prend en charge la syntaxe du débogueur Windows <module>!<type>.This command supports the Windows debugger syntax of <module>!<type>. Le type doit être qualifié complet.The type must be fully qualified.
ObjSize [<Object address>] | [-aggregate] [-stat]ObjSize [<Object address>] | [-aggregate] [-stat] Affiche la taille de l'objet spécifié.Displays the size of the specified object. Si vous ne spécifiez aucun paramètre, la commande ObjSize affiche la taille de tous les objets trouvés dans les threads managés, ainsi que tous les handles du récupérateur de mémoire dans le processus et additionne la taille de tous les objets désignés par ces handles.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. La commande ObjSize inclut la taille de tous les objets enfants en plus du parent.The ObjSize command includes the size of all child objects in addition to the parent.

L’option -aggregate peut être utilisée avec l’argument -stat pour obtenir une vue détaillée des types qui sont encore associés à une racine.The -aggregate option can be used in conjunction with the -stat argument to get a detailed view of the types that are still rooted. L’utilisation de !dumpheap -stat et !objsize -aggregate -stat vous permet de déterminer les objets qui ne sont plus associés à une racine et de diagnostiquer différents problèmes de mémoire.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] [<Exception object address>]PrintException [-nested] [-lines] [<Exception object address>]

- ou --or-

PE [-nested] [<Exception object address>]PE [-nested] [<Exception object address>]
Affiche et met en forme les champs de tous les objets dérivés de la classe Exception à l'adresse spécifiée.Displays and formats fields of any object derived from the Exception class at the specified address. Si vous ne spécifiez pas d’adresse, la commande PrintException affiche la dernière exception levée dans le thread actuel.If you do not specify an address, the PrintException command displays the last exception thrown on the current thread.

L’option -nested affiche des détails sur les objets d’exception imbriquée.The -nested option displays details about nested exception objects.

L’option -lines affiche des informations sur la source, si elles sont disponibles.The -lines option displays source information, if available.

Vous pouvez utiliser cette commande pour mettre en forme et consulter le champ _stackTrace qui est un tableau binaire.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] Affiche les variables d'environnement pour le processus, le temps CPU noyau et les statistiques relatives à l'utilisation de la mémoire.Displays environment variables for the process, kernel CPU time, and memory usage statistics.
RCWCleanupList <RCWCleanupList address>RCWCleanupList <RCWCleanupList address> Affiche la liste des wrappers RCW (Runtime Callable Wrapper) à l'adresse spécifiée qui sont en attente de nettoyage.Displays the list of runtime callable wrappers at the specified address that are awaiting cleanup.
SaveModule <Base address> <Filename>SaveModule <Base address> <Filename> Écrit une image, chargée dans la mémoire à l'adresse spécifiée, dans le fichier spécifié.Writes an image, which is loaded in memory at the specified address, to the specified file.
SOSFlushSOSFlush Vide un cache SOS interne.Flushes an internal SOS cache.
StopOnException [-derived] [-create | -create2] <Exception> <Pseudo-register number>StopOnException [-derived] [-create | -create2] <Exception> <Pseudo-register number> Entraîne l'arrêt du débogueur lorsque l'exception spécifiée est levée, mais la poursuite de son exécution lorsque d'autres exceptions sont levées.Causes the debugger to stop when the specified exception is thrown, but to continue running when other exceptions are thrown.

L’option -derived intercepte l’exception spécifiée et chaque exception dérivée de l’exception spécifiée.The -derived option catches the specified exception and every exception that derives from the specified exception.
SyncBlk [-all | <syncblk number>]SyncBlk [-all | <syncblk number>] Affiche la structure SyncBlock spécifiée ou l'ensemble des structures SyncBlock.Displays the specified SyncBlock structure or all SyncBlock structures. Si vous ne passez pas d’argument, la commande SyncBlk affiche la structure SyncBlock correspondant aux objets possédés par un thread.If you do not pass any arguments, the SyncBlk command displays the SyncBlock structure corresponding to objects that are owned by a thread.

Une structure SyncBlock est un conteneur pour les informations supplémentaires qui n'a pas besoin d'être créé pour chaque objet.A SyncBlock structure is a container for extra information that does not need to be created for every object. Elle peut contenir des données COM Interop, des codes de hachage et des informations de verrouillage pour les opérations thread-safe.It can hold COM interop data, hash codes, and locking information for thread-safe operations.
ThreadPoolThreadPool Affiche des informations sur le pool de threads managé, y compris le nombre de demandes de tâches dans la file d'attente, le nombre de threads de port de terminaison, et le nombre de minuteries.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 <module name> <token>Token2EE <module name> <token> Convertit le jeton de métadonnées spécifié dans le module spécifié en structure MethodTable ou MethodDesc.Turns the specified metadata token in the specified module into a MethodTable structure or MethodDesc structure.

Vous pouvez passer * comme paramètre de nom de module pour rechercher le mappage de ce jeton dans chaque module managé chargé.You can pass * for the module name parameter to find what that token maps to in every loaded managed module. Vous pouvez également passer le nom du débogueur pour un module, tel que mscorlib ou image00400000.You can also pass the debugger's name for a module, such as mscorlib or image00400000.
Threads [-live] [-special]Threads [-live] [-special] Affiche tous les threads managés dans le processus.Displays all managed threads in the process.

La commande Threads affiche l’ID abrégé du débogueur, l’ID de thread du CLR et l’ID de thread du système d’exploitation.The Threads command displays the debugger shorthand ID, the CLR thread ID, and the operating system thread ID. Par ailleurs, la commande Threads affiche une colonne Domain qui indique le domaine d’application dans lequel un thread s’exécute, une colonne APT qui affiche le mode COM cloisonné, et une colonne Exception qui affiche la dernière exception levée dans le thread.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.

L’option -live affiche les threads associés à un thread actif.The -live option displays threads associated with a live thread.

L’option -special affiche tous les threads spéciaux créés par le CLR.The -special option displays all special threads created by the CLR. Les threads spéciaux incluent les threads du garbage collection (simultané et garbage collection du serveur), les threads d'assistance du débogueur, les threads finaliseurs, les threads Unload AppDomain et les threads de minuterie Threadpool.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 < State value field >ThreadState < State value field > Affiche l'état du thread.Displays the state of the thread. Le paramètre value est la valeur du champ State dans la sortie du rapport Threads.The value parameter is the value of the State field in the Threads report output.

Exemple :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] <filename>TraverseHeap [-xml] <filename> Écrit les informations du tas dans le fichier spécifié dans un format compris par le profileur du CLR.Writes heap information to the specified file in a format understood by the CLR profiler. Quand l’option -xml est spécifiée, la commande TraverseHeap applique le format XML au fichier.The -xml option causes the TraverseHeap command to format the file as XML.

Vous pouvez télécharger le profileur CLR à partir du Centre de téléchargement Microsoft.You can download the CLR Profiler from the Microsoft Download Center.
U [-gcinfo] [-ehinfo] [-n] <MethodDesc address> | <Code address>U [-gcinfo] [-ehinfo] [-n] <MethodDesc address> | <Code address> Affiche un code machine annoté d'une méthode managée spécifié par un pointeur de structure MethodDesc pour la méthode ou par une adresse de code dans le corps de la méthode.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. La commande U affiche l’intégralité de la méthode du début à la fin, avec les annotations qui convertissent les jetons de métadonnées en noms.The U command displays the entire method from start to finish, with annotations that convert metadata tokens to names.

L’option -gcinfo permet à la commande U d’afficher la structure GCInfo pour la méthode.The -gcinfo option causes the U command to display the GCInfo structure for the method.

L’option -ehinfo affiche des informations sur les exceptions pour la méthode.The -ehinfo option displays exception information for the method. Vous pouvez également obtenir ces informations avec la commande EHInfo.You can also obtain this information with the EHInfo command.

L’option -n désactive l’affichage des noms de fichier source et des numéros de ligne.The -n option disables the display of source file names and line numbers. Si l'option SYMOPT_LOAD_LINES est spécifiée sur le débogueur, SOS recherche les symboles pour chaque frame managé et, s'il les trouve, affiche le nom de fichier source et le numéro de ligne correspondants.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. Vous pouvez spécifier l’option -n pour désactiver ce comportement.You can specify the -n option to disable this behavior.
VerifyHeapVerifyHeap Vérifie le tas de récupérateur de mémoire pour rechercher des signes d'altération et affiche toutes les erreurs trouvées.Checks the garbage collector heap for signs of corruption and displays any errors found.

Les altérations du tas peuvent être provoquées par des appels de code construits de manière incorrecte.Heap corruptions can be caused by platform invoke calls that are constructed incorrectly.
VerifyObj <object address>VerifyObj <object address> Vérifie l’objet passé comme argument à la recherche de signes d’altération.Checks the object that is passed as an argument for signs of corruption.
VMMapVMMap Parcourt l'espace d'adressage virtuel et affiche le type de protection appliqué à chaque région.Traverses the virtual address space and displays the type of protection applied to each region.
VMStatVMStat Fournit un résumé de l’espace d’adressage virtuel, classé par type de protection appliqué à cette mémoire (libre, réservé, validé, privé, mappé, 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). La colonne TOTAL affiche le résultat de la colonne MOYENNE multipliée par la colonne COMPTE BLQ.The TOTAL column displays the result of the AVERAGE column multiplied by the BLK COUNT column.

NotesRemarks

L’extension de débogage SOS vous permet d’afficher des informations sur l’exécution du code au sein du CLR.The SOS Debugging Extension lets you view information about code that is running inside the CLR. Par exemple, vous pouvez utiliser l’extension de débogage SOS pour afficher des informations sur le tas managé, rechercher des altérations du tas, afficher les types de données internes utilisés par le runtime et afficher des informations sur l’ensemble du code managé exécuté au sein du runtime.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.

Pour utiliser l’extension de débogage SOS dans Visual Studio, installez le Kit WDK (Windows Driver Kit).To use the SOS Debugging Extension in Visual Studio, install the Windows Driver Kit (WDK). Pour plus d’informations sur l’environnement de débogage intégré dans Visual Studio, consultez Debugging Environments (Environnements de débogage).For information about the integrated debugging environment in Visual Studio, see Debugging Environments.

Vous pouvez également utiliser l’extension de débogage SOS en la chargeant dans le débogueur WinDbg.exe et en exécutant les commandes dans WinDbg.exe.You can also use the SOS Debugging Extension by loading it into the WinDbg.exe debugger and executing commands within WinDbg.exe.

Pour charger l’Extension de débogage SOS dans le débogueur WinDbg.exe, exécutez la commande suivante dans l’outil :To load the SOS Debugging Extension into the WinDbg.exe debugger, run the following command in the tool:

.loadby sos clr

WinDbg.exe et Visual Studio utilisent une version de SOS.dll qui correspond à la version de Mscorwks.dll actuellement utilisée.WinDbg.exe and Visual Studio use a version of SOS.dll that corresponds to the version of Mscorwks.dll currently in use. Par défaut, vous devez utiliser la version de SOS.dll qui correspond à la version actuelle de Mscorwks.dll.By default, you should use the version of SOS.dll that matches the current version of Mscorwks.dll.

Pour utiliser un fichier dump créé sur un autre ordinateur, vérifiez que le fichier Mscorwks.dll fourni avec cette installation se trouve dans votre chemin d'accès aux symboles, et chargez la version correspondante de 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.

Pour charger une version spécifique de SOS.dll, tapez la commande suivante dans le débogueur Windows :To load a specific version of SOS.dll, type the following command into the Windows Debugger:

.load <full path to sos.dll>

ExemplesExamples

La commande suivante affiche le contenu d'un tableau à l'adresse 00ad28d0.The following command displays the contents of an array at the address 00ad28d0. L'affichage démarre à partir du deuxième élément et se poursuit avec les cinq éléments suivants.The display starts from the second element and continues for five elements.

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

La commande suivante affiche le contenu d'un assembly à l'adresse 1ca248.The following command displays the contents of an assembly at the address 1ca248.

!dumpassembly 1ca248

La commande suivante affiche des informations sur le tas de récupérateur de mémoire.The following command displays information about the garbage collector heap.

!dumpheap

La commande suivante écrit le contenu du journal de contrainte en mémoire dans un fichier appelé StressLog.txt (par défaut) dans le répertoire actif.The following command writes the contents of the in-memory stress log to a (default) file called StressLog.txt in the current directory.

!DumpLog

La commande suivante affiche la structure MethodDesc à l'adresse 902f40.The following command displays the MethodDesc structure at the address 902f40.

!dumpmd 902f40

La commande suivante affiche des informations sur un module à l'adresse 1caa50.The following command displays information about a module at the address 1caa50.

!dumpmodule 1caa50

La commande suivante affiche des informations sur un objet à l'adresse a79d40.The following command displays information about an object at the address a79d40.

!DumpObj a79d40

La commande suivante affiche les champs d'une classe de valeur à l'adresse 00a79d9c, à l'aide de la table de méthodes à l'adresse 0090320c.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

La commande suivante affiche la mémoire du processus utilisée par le récupérateur de mémoire.The following command displays the process memory used by the garbage collector.

!eeheap -gc

La commande suivante affiche tous les objets planifiés pour la finalisation.The following command displays all objects scheduled for finalization.

!finalizequeue

La commande suivante détermine le domaine d'application d'un objet à l'adresse 00a79d98.The following command determines the application domain of an object at the address 00a79d98.

!findappdomain 00a79d98

La commande suivante affiche tous les handles du récupérateur de mémoire dans le processus actuel.The following command displays all garbage collector handles in the current process.

!gcinfo 5b68dbb8

La commande suivante affiche les structures MethodTable et EEClass pour la méthode Main, dans la classe MainClass, dans le module unittest.exe.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

La commande suivante affiche des informations sur le jeton de métadonnées à l'adresse 02000003 dans le module unittest.exe.The following command displays information about the metadata token at the address 02000003 in the module unittest.exe.

!token2ee unittest.exe 02000003

Voir aussiSee also