SOS.dll (extensão de depuração SOS)SOS.dll (SOS debugging extension)

A Extensão de Depuração SOS (SOS.dll) ajuda a depurar programas gerenciados no Visual Studio e no depurador do Windows (WinDbg.exe) fornecendo informações sobre o ambiente interno do 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. Essa ferramenta exige que o projeto tenha depuração não gerenciada habilitada.This tool requires your project to have unmanaged debugging enabled. SOS.dll é instalado automaticamente com o .NET Framework.SOS.dll is automatically installed with the .NET Framework. Para usar SOS.dll no Visual Studio, instale o WDK (Kit de Driver do Windows).To use SOS.dll in Visual Studio, install the Windows Driver Kit (WDK).

SintaxeSyntax

![command] [options]

ComandosCommands

ComandoCommand DescriçãoDescription
AnalyzeOOM (ao)AnalyzeOOM (ao) Exibe as informações do último erro de OOM (memória insuficiente) ocorrido em uma solicitação de alocação para o heap da coleta de lixo.Displays the information for the last out of memory (OOM) that occurred on an allocation request to the garbage collection heap. (Na coleta de lixo do servidor, ele exibirá OOM, se houver, em cada heap da coleta de lixo.)(In server garbage collection, it displays OOM, if any, on each garbage collection heap.)
BPMD [ -nofuturemodule] [<nome do módulo> <nome do método>] [ -md <MethodDesc>] -list -clear <número do ponto de interrupção pendente> -clearallBPMD [-nofuturemodule] [<module name> <method name>] [-md <MethodDesc>] -list -clear <pending breakpoint number> -clearall Cria um ponto de interrupção no método especificado do módulo especificado.Creates a breakpoint at the specified method in the specified module.

Se o módulo e o método especificados não forem carregados, esse comando aguardará uma notificação de que o módulo foi carregado e compilado JIT (just-in-time) antes de criar um ponto de interrupção.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.

É possível gerenciar a lista dos pontos de interrupção pendentes usando as opções -list, -clear e -clearall:You can manage the list of pending breakpoints by using the -list, -clear, and -clearall options:

A opção -list gerencia uma lista de todos os pontos de interrupção pendentes.The -list option generates a list of all the pending breakpoints. Se um ponto de interrupção pendente tiver uma ID de módulo diferente de zero, esse ponto de interrupção será específico de uma função nesse módulo carregado em especial.If a pending breakpoint has a non-zero module ID, that breakpoint is specific to a function in that particular loaded module. Se o ponto de interrupção pendente tiver uma ID de módulo zero, esse ponto de interrupção se aplicará aos módulos que ainda não foram carregados.If the pending breakpoint has a zero module ID, that breakpoint applies to modules that have not yet been loaded.

Use a opção -clear ou -clearall para remover os pontos de interrupção pendentes da lista.Use the -clear or -clearall option to remove pending breakpoints from the list.
CLRStack [ -a] [ -l] [ -p] [ -n]CLRStack [-a] [-l] [-p] [-n] Fornece um rastreamento de pilha apenas do código gerenciado.Provides a stack trace of managed code only.

A opção -p mostra argumentos para a função gerenciada.The -p option shows arguments to the managed function.

A opção -l mostra informações sobre as variáveis locais em um quadro.The -l option shows information on local variables in a frame. Como a Extensão de Depuração SOS não consegue recuperar nomes locais, a saída de nomes locais está no formato <endereço local> = <valor>.The SOS Debugging Extension cannot retrieve local names, so the output for local names is in the format <local address> = <value>.

A opção -a(all) é um atalho para -l e -p combinados.The -a(all) option is a shortcut for -l and -p combined.

A opção -n desabilita a exibição dos nomes de arquivo de origem e dos números de linha.The -n option disables the display of source file names and line numbers. Se o depurador tiver a opção SYMOPT_LOAD_LINES especificada, o SOS pesquisará os símbolos de cada quadro gerenciado e, se bem-sucedido, exibirá o nome do arquivo de origem e o número da linha correspondentes.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. O parâmetro -n (sem números de linha) pode ser especificado para desabilitar esse comportamento.The -n (No line numbers) parameter can be specified to disable this behavior.

A Extensão de Depuração do SOS não exibe quadros de transição em plataformas com base em x64 e IA-64.The SOS Debugging Extension does not display transition frames on x64 and IA-64-based platforms.
COMStateCOMState Lista o modelo de apartment COM para cada thread e um ponteiro Context, se disponível.Lists the COM apartment model for each thread and a Context pointer, if available.
DumpArray [ -start <startIndex>] [ -length <length>] [ -details] [ -nofields] <endereço de objeto da matriz>DumpArray [-start <startIndex>] [-length <length>] [-details] [-nofields] <array object address>

- ou --or-

DA [ -start <startIndex>] [ -length <length>] [ -detail] [ -nofields] endereço de objeto da matriz>DA [-start <startIndex>] [-length <length>] [-detail] [-nofields] array object address>
Examina elementos de um objeto da matriz.Examines elements of an array object.

A opção -start especifica o índice inicial no qual os elementos são exibidos.The -start option specifies the starting index at which to display elements.

A opção -length especifica quantos elementos devem ser mostrados.The -length option specifies how many elements to show.

A opção -details exibe detalhes do elemento usando os formatos DumpObj e DumpVC.The -details option displays details of the element using the DumpObj and DumpVC formats.

A opção -nofields impede que as matrizes sejam exibidas.The -nofields option prevents arrays from displaying. Essa opção só está disponível quando a opção -detail é especificada.This option is available only when the -detail option is specified.
DumpAssembly <endereço do assembly>DumpAssembly <assembly address> Exibe informações sobre um assembly.Displays information about an assembly.

O comando DumpAssembly lista vários módulos, se existirem.The DumpAssembly command lists multiple modules, if they exist.

É possível obter um endereço de assembly usando o comando DumpDomain.You can get an assembly address by using the DumpDomain command.
DumpClass <endereço do EEClass>DumpClass <EEClass address> Exibe informações sobre a estrutura EEClass associada a um tipo.Displays information about the EEClass structure associated with a type.

O comando DumpClass exibe valores de campo estáticos, mas não exibe valores de campo não estáticos.The DumpClass command displays static field values but does not display nonstatic field values.

Use o comando DumpMT, DumpObj, Name2EE ou Token2EE para obter um endereço da estrutura do EEClass.Use the DumpMT, DumpObj, Name2EE, or Token2EE command to get an EEClass structure address.
DumpDomain [<endereço do domínio>]DumpDomain [<domain address>] Enumera cada objeto Assembly carregado no endereço do objeto AppDomain especificado.Enumerates each Assembly object that is loaded within the specified AppDomain object address. Quando chamado sem parâmetros, o comando DumpDomain lista todos os objetos AppDomain em um processo.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 <endereço de MethodTable>] [ -type <nome do tipo parcial>][start [end]]DumpHeap [-stat] [-strings] [-short] [-min <size>] [-max <size>] [-thinlock] [-startAtLowerBound] [-mt <MethodTable address>] [-type <partial type name>][start [end]] Exibe informações sobre o heap com coleta de lixo e as estatísticas de coleção sobre objetos.Displays information about the garbage-collected heap and collection statistics about objects.

O comando DumpHeap exibirá um aviso se detectar fragmentação excessiva no heap do coletor de lixo.The DumpHeap command displays a warning if it detects excessive fragmentation in the garbage collector heap.

A opção -stat restringe a saída ao resumo de tipo estatístico.The -stat option restricts the output to the statistical type summary.

A opção -strings restringe a saída a um resumo de valor da cadeia de caracteres estatístico.The -strings option restricts the output to a statistical string value summary.

A opção -short limita a saída apenas ao endereço de cada objeto.The -short option limits output to just the address of each object. Isso permite redirecionar facilmente do comando para outro comando do depurador para automação.This lets you easily pipe output from the command to another debugger command for automation.

A opção -min ignora objetos menores que o parâmetro size, especificado em bytes.The -min option ignores objects that are less than the size parameter, specified in bytes.

A opção -max ignora objetos maiores que o parâmetro size, especificado em bytes.The -max option ignores objects that are larger than the size parameter, specified in bytes.

A opção -thinlock relata ThinLocks.The -thinlock option reports ThinLocks. Para obter mais informações, consulte o comando SyncBlk.For more information, see the SyncBlk command.

A opção -startAtLowerBound força o exame do heap para iniciar no limite inferior de um intervalo de endereços fornecido.The -startAtLowerBound option forces the heap walk to begin at the lower bound of a supplied address range. Durante a fase de planejamento, o heap não costuma ser examinável porque os objetos estão sendo movidos.During the planning phase, the heap is often not walkable because objects are being moved. Essa opção força DumpHeap para iniciar seu exame no limite inferior especificado.This option forces DumpHeap to begin its walk at the specified lower bound. Você deve fornecer o endereço de um objeto válido como o limite inferior para que essa opção funcione.You must supply the address of a valid object as the lower bound for this option to work. É possível exibir a memória no endereço de um objeto inválido para encontrar manualmente a próxima tabela do método.You can display memory at the address of a bad object to manually find the next method table. Se a coleta de lixo estiver atualmente em uma chamada para memcopy, você também poderá encontrar o endereço do próximo objeto adicionando o tamanho ao endereço inicial, fornecido como um parâmetro.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.

A opção -mt lista apenas os objetos que correspondem à estrutura especificada MethodTable.The -mt option lists only those objects that correspond to the specified MethodTable structure.

A opção -type lista apenas esses objetos cujo nome do tipo é uma correspondência de subcadeia de caracteres da cadeia de caracteres especificada.The -type option lists only those objects whose type name is a substring match of the specified string.

O parâmetro start inicia a listagem com base no endereço especificado.The start parameter begins listing from the specified address.

O parâmetro end para a listagem no endereço especificado.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> Exibe o MSIL (Microsoft Intermediate Language) associado a um método gerenciado.Displays the Microsoft intermediate language (MSIL) that is associated with a managed method.

Observe que o MSIL dinâmico é emitido de forma diferente do que o MSIL carregado com base em um assembly.Note that dynamic MSIL is emitted differently than MSIL that is loaded from an assembly. O MSIL dinâmico faz referência a objetos em uma matriz de objetos gerenciados, em vez dos tokens de metadados.Dynamic MSIL refers to objects in a managed object array rather than to metadata tokens.
DumpLog [ -addr <addressOfStressLog>] [<Filename>]DumpLog [-addr <addressOfStressLog>] [<Filename>] Grava o conteúdo de um log de estresse na memória no arquivo especificado.Writes the contents of an in-memory stress log to the specified file. Se você não especificar um nome, esse comando criará um arquivo chamado StressLog.txt no diretório atual.If you do not specify a name, this command creates a file called StressLog.txt in the current directory.

O log de estresse na memória ajuda a diagnosticar falhas de estresse sem usar bloqueios ou E/S.The in-memory stress log helps you diagnose stress failures without using locks or I/O. Para habilitar o log de estresse, defina as seguintes chaves do Registro em 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

A opção -addr permite especificar um log de estresse diferente do log padrão.The optional -addr option lets you specify a stress log other than the default log.
DumpMD <endereço de MethodDesc>DumpMD <MethodDesc address> Exibe informações sobre uma estrutura MethodDesc no endereço especificado.Displays information about a MethodDesc structure at the specified address.

É possível usar o comando IP2MD para obter o endereço da estrutura MethodDesc com base em uma função gerenciada.You can use the IP2MD command to get the MethodDesc structure address from a managed function.
DumpMT [ -MD] <endereço de MethodTable>DumpMT [-MD] <MethodTable address> Exibe informações sobre uma tabela de métodos no endereço especificado.Displays information about a method table at the specified address. A especificação da opção -MD exibe uma lista de todos os métodos definidos com o objeto.Specifying the -MD option displays a list of all methods defined with the object.

Cada objeto gerenciado contém um ponteiro da tabela do método.Each managed object contains a method table pointer.
DumpMethodSig <sigaddr> <moduleaddr>DumpMethodSig <sigaddr> <moduleaddr> Exibe informações sobre uma estrutura MethodSig no endereço especificado.Displays information about a MethodSig structure at the specified address.
DumpModule [ -mt] <endereço de Module>DumpModule [-mt] <Module address> Exibe informações sobre um módulo no endereço especificado.Displays information about a module at the specified address. A opção -mt exibe os tipos definidos em um módulo e os tipos referenciados pelo móduloThe -mt option displays the types defined in a module and the types referenced by the module

É possível usar o comando DumpDomain ou DumpAssembly para recuperar o endereço de um módulo.You can use the DumpDomain or DumpAssembly command to retrieve a module's address.
DumpObj [ -nofields] <endereço do objeto>DumpObj [-nofields] <object address>

- ou --or-

DO <endereço do objeto>DO <object address>
Exibe informações sobre um objeto no endereço especificado.Displays information about an object at the specified address. O comando DumpObj exibe os campos, as informações da estrutura EEClass, a tabela do método e o tamanho do objeto.The DumpObj command displays the fields, the EEClass structure information, the method table, and the size of the object.

É possível usar o comando DumpStackObjects para recuperar o endereço de um objeto.You can use the DumpStackObjects command to retrieve an object's address.

Observe que é possível executar o comando DumpObj em campos do tipo CLASS porque eles também são objetos.Note that you can run the DumpObj command on fields of type CLASS because they are also objects.

A opção -nofields evita a exibição de campos do objeto e é útil para objetos como String.The -nofields option prevents fields of the object being displayed, it is useful for objects like String.
DumpRuntimeTypesDumpRuntimeTypes Exibe os objetos de tipo do tempo de execução no heap do coletor de lixo e lista seus nomes de tipo associados e tabelas de método.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]] Exibe um rastreamento de pilha.Displays a stack trace.

A opção -EE faz com que o comando DumpStack exiba apenas funções gerenciadas.The -EE option causes the DumpStack command to display only managed functions. Use os parâmetros top e bottom para limitar os quadros de pilha exibidos em plataformas x86.Use the top and bottom parameters to limit the stack frames displayed on x86 platforms.

A opção -n desabilita a exibição dos nomes de arquivo de origem e dos números de linha.The -n option disables the display of source file names and line numbers. Se o depurador tiver a opção SYMOPT_LOAD_LINES especificada, o SOS pesquisará os símbolos de cada quadro gerenciado e, se bem-sucedido, exibirá o nome do arquivo de origem e o número da linha correspondentes.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. O parâmetro -n (sem números de linha) pode ser especificado para desabilitar esse comportamento.The -n (No line numbers) parameter can be specified to disable this behavior.

Em plataformas x86 e x64, o comando DumpStack cria um rastreamento de pilha detalhado.On x86 and x64 platforms, the DumpStack command creates a verbose stack trace.

Em plataformas com base em IA-64, o comando DumpStack imita o comando K do depurador.On IA-64-based platforms, the DumpStack command mimics the debugger's K command. Os parâmetros top e bottom são ignorados em plataformas com base em IA-64.The top and bottom parameters are ignored on IA-64-based platforms.
DumpSig <sigaddr> <moduleaddr>DumpSig <sigaddr> <moduleaddr> Exibe informações sobre uma estrutura Sig no endereço especificado.Displays information about a Sig structure at the specified address.
DumpSigElem <sigaddr> <moduleaddr>DumpSigElem <sigaddr> <moduleaddr> Exibe um único elemento de um objeto de assinatura.Displays a single element of a signature object. Na maioria dos casos, você deve usar DumpSig para observar objetos de assinatura individuais.In most cases, you should use DumpSig to look at individual signature objects. No entanto, se uma assinatura tiver sido corrompida de alguma forma, será possível usar DumpSigElem para ler partes válidas dela.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]]
Exibe todos os objetos gerenciados encontradas dentro dos limites da pilha atual.Displays all managed objects found within the bounds of the current stack.

A opção -verify valida cada campo CLASS não estático de um campo do objeto.The -verify option validates each non-static CLASS field of an object field.

Use o comando DumpStackObject com comandos de rastreamento de pilha como o comando K e o comando CLRStack para determinar os valores de variáveis locais e parâmetros.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 <endereço de MethodTable> <Address>DumpVC <MethodTable address> <Address> Exibe informações sobre os campos de uma classe de valor no endereço especificado.Displays information about the fields of a value class at the specified address.

O parâmetro MethodTable permite que o comando DumpVC interprete os campos corretamente.The MethodTable parameter allows the DumpVC command to correctly interpret fields. As classes de valor não têm uma tabela de método como seu primeiro campo.Value classes do not have a method table as their first field.
EEHeap [ -gc] [ -loader]EEHeap [-gc] [-loader] Exibe informações sobre a memória de processo consumida por estruturas de dados CLR internas.Displays information about process memory consumed by internal CLR data structures.

As opções -gc e -loader limitam a saída desse comando ao coletor de lixo ou a estruturas de dados do carregador.The -gc and -loader options limit the output of this command to garbage collector or loader data structures.

As informações do coletor de lixo lista os intervalos de cada segmento no heap gerenciado.The information for the garbage collector lists the ranges of each segment in the managed heap. Se o ponteiro estiver dentro de um intervalo de segmentos indicado por -gc, o ponteiro será um ponteiro de objeto.If the pointer falls within a segment range given by -gc, the pointer is an object pointer.
EEStack [ -short] [ -EE]EEStack [-short] [-EE] Executa o comando DumpStack em todos os threads no processo.Runs the DumpStack command on all threads in the process.

A opção -EE é passada diretamente para o comando DumpStack.The -EE option is passed directly to the DumpStack command. O parâmetro -short limita a saída aos seguintes tipos de threads:The -short parameter limits the output to the following kinds of threads:

Threads que tenham utilizado um bloqueio.Threads that have taken a lock.

Threads que foram interrompidos para permitir uma coleta de lixo.Threads that have been stalled in order to allow a garbage collection.

Threads que estão atualmente em código gerenciado.Threads that are currently in managed code.
EEVersionEEVersion Exibe a versão do CLR.Displays the CLR version.
EHInfo [<endereço de MethodDesc>] [<endereço de Code>]EHInfo [<MethodDesc address>] [<Code address>] Exibe os blocos de tratamento de exceções em um método especificado.Displays the exception handling blocks in a specified method. Este comando exibe os endereços de código e os deslocamentos do bloco de cláusula (o bloco try) e o bloco do manipulador (o bloco catch).This command displays the code addresses and offsets for the clause block (the try block) and the handler block (the catch block).
PERGUNTAS FREQUENTESFAQ Exibe perguntas frequentesDisplays frequently asked questions.
FinalizeQueue [ -detail] | [ -allReady] [ -short]FinalizeQueue [-detail] | [-allReady] [-short] Exibe todos os objetos registrados para a finalização.Displays all objects registered for finalization.

A opção -detail exibe informações extras sobre todos os SyncBlocks que precisam ser limpos e todos os RuntimeCallableWrappers (RCWs) que aguardam limpeza.The -detail option displays extra information about any SyncBlocks that need to be cleaned up, and any RuntimeCallableWrappers (RCWs) that await cleanup. Ambas as estruturas de dados são armazenadas em cache e limpas pelo thread de finalizador quando é executado.Both of these data structures are cached and cleaned up by the finalizer thread when it runs.

A opção -allReady exibe todos os objetos prontos para finalização, independentemente de também já estarem marcados assim pela coleta de lixo, ou serão marcado pela próxima coleta de lixo.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. Os objetos prontos na lista "pronta para finalização" são objetos finalizáveis que não têm mais raízes.The objects that are in the "ready for finalization" list are finalizable objects that are no longer rooted. Essa opção pode ser muito cara, porque verifica se todos os objetos nas filas finalizáveis ainda têm raízes.This option can be very expensive, because it verifies whether all the objects in the finalizable queues are still rooted.

A opção -short limita a saída ao endereço de cada objeto.The -short option limits the output to the address of each object. Se for usado com -allReady, ele enumerará todos os objetos que têm um finalizador que não tem mais raiz.If it is used in conjunction with -allReady, it enumerates all objects that have a finalizer that are no longer rooted. Se for usado independentemente, ele listará todos os objetos nas filas finalizáveis e "prontas para finalização".If it is used independently, it lists all objects in the finalizable and "ready for finalization" queues.
FindAppDomain <endereço de Object>FindAppDomain <Object address> Determina o domínio do aplicativo de um objeto no endereço especificado.Determines the application domain of an object at the specified address.
FindRoots -gen <N> | -gen any |<endereço do objeto>FindRoots -gen <N> | -gen any |<object address> Faz o depurador parar no elemento a ser depurado na próxima coleção da geração especificada.Causes the debugger to break in the debuggee on the next collection of the specified generation. O efeito será redefinido assim que ocorrer a parada.The effect is reset as soon as the break occurs. Para parar na próxima coleção, você precisa reemitir o comando.To break on the next collection, you have to reissue the command. O formulário <endereço do objeto> desse comando será usado depois que a interrupção causada pelo -gen ou -gen any tiver ocorrido.The <object address> form of this command is used after the break caused by the -gen or -gen any has occurred. Nesse momento, o depurador está no estado correto de FindRoots para identificar raízes para objetos nas gerações condenadas atuais.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] Exibe estatísticas sobre identificadores do coletor de lixo no processo.Displays statistics about garbage collector handles in the process.

A opção -perdomain organiza as estatísticas por domínio do aplicativo.The -perdomain option arranges the statistics by application domain.

Use o comando GCHandles para encontrar perdas de memória causadas por perdas de identificador do coletor de lixo.Use the GCHandles command to find memory leaks caused by garbage collector handle leaks. Por exemplo, uma perda de memória ocorre quando o código mantém uma grande matriz porque um identificador do coletor de lixo forte continua apontando para ela e o identificador é descartado sem liberá-lo.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 Procura na memória referências para identificadores do coletor de lixo fortes e fixos no processo e exibe os resultados.Searches memory for any references to strong and pinned garbage collector handles in the process and displays the results. Se um identificador for encontrado, o comando GCHandleLeaks exibirá o endereço da referência.If a handle is found, the GCHandleLeaks command displays the address of the reference. Se um identificador não for encontrado na memória, esse comando exibirá uma notificação.If a handle is not found in memory, this command displays a notification.
GCInfo <endereço de MethodDesc><endereço de Code>GCInfo <MethodDesc address><Code address> Exibe dados que indicam quando registros ou locais da pilha contêm objetos gerenciados.Displays data that indicates when registers or stack locations contain managed objects. Se ocorrer uma coleta de lixo, o coletor deverá saber os locais de referências para objetos de forma que possa atualizá-los com novos valores de ponteiro do objeto.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] <endereço de Object>GCRoot [-nostacks] <Object address> Exibe informações sobre referências (ou nós) para um objeto no endereço especificado.Displays information about references (or roots) to an object at the specified address.

O comando GCRoot examina todo o heap gerenciado e a tabela do identificador para identificadores dentro de outros objetos e identificadores na pilha.The GCRoot command examines the entire managed heap and the handle table for handles within other objects and handles on the stack. Em seguida, cada pilha é pesquisada em busca de ponteiros para objetos, e a fila de finalizadores também é pesquisada.Each stack is then searched for pointers to objects, and the finalizer queue is also searched.

Este comando não determina se uma raiz da pilha é válida ou se é descartada.This command does not determine whether a stack root is valid or is discarded. Use os comandos CLRStack e U para desmontar o quadro a que valor de local ou argumento pertence para determinar se a raiz da pilha ainda está em uso.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.

A opção -nostacks restringe a pesquisa a identificadores do coletor de lixo e objetos alcançáveis.The -nostacks option restricts the search to garbage collector handles and reachable objects.
GCWhere <endereço do objeto>GCWhere <object address> Exibe o local e o tamanho no heap da coleta de lixo do argumento passado.Displays the location and size in the garbage collection heap of the argument passed in. Quando o argumento está no heap gerenciado, mas não é um endereço de objeto válido, o tamanho é exibido como 0 (zero).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] Exibe todos os comandos disponíveis quando nenhum parâmetro é especificado ou exibe informações detalhadas sobre o comando especificado.Displays all available commands when no parameter is specified, or displays detailed help information about the specified command.

O parâmetro faq exibe respostas para perguntas frequentes.The faq parameter displays answers to frequently asked questions.
HeapStat [ -inclUnrooted | -iu]HeapStat [-inclUnrooted | -iu] Exibe os tamanhos de geração para cada heap e o espaço livre total em cada geração em cada heap.Displays the generation sizes for each heap and the total free space in each generation on each heap. Se a opção -inclUnrooted for especificada, o relatório incluirá informações sobre os objetos gerenciados do heap da coleta de lixo que não tem mais raiz.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 Libera todos os recursos usados pela família de comandos Hist.Releases any resources used by the family of Hist commands.

Em geral, você não precisa chamar explicitamente HistClear, porque cada HistInit limpa os recursos anteriores.Generally, you do not have to explicitly call HistClear, because each HistInit cleans up the previous resources.
HistInitHistInit Inicializa as estruturas de SOS com base no log de estresse salvo no elemento a ser depurado.Initializes the SOS structures from the stress log saved in the debuggee.
HistObj <obj_address>HistObj <obj_address> Examina todos os registros de realocação do log de estresse e exibe a cadeia de realocações da coleta de lixo que podem ter levado o endereço a ser passado como um argumento.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> Exibe todas as entradas de log que fazem referência a um objeto no endereço especificado.Displays all the log entries that reference an object at the specified address.
HistRoot <root>HistRoot <root> Exibe informações relacionadas a ambas as promoções e realocações da raiz especificada.Displays information related to both promotions and relocations of the specified root.

O valor raiz pode ser usado para rastrear o movimento de um objeto por meio das coletas de lixo.The root value can be used to track the movement of an object through the garbage collections.
IP2MD <Code address>IP2MD <Code address> Exibe a estrutura MethodDesc no endereço especificado no código compilado com JIT.Displays the MethodDesc structure at the specified address in code that has been JIT-compiled.
ListNearObj (lno) <obj_address>ListNearObj (lno) <obj_address> Exibe os objetos anteriores e posteriores ao endereço especificado.Displays the objects preceding and following the specified address. O comando procura o endereço no heap da coleta de lixo semelhante a um início válido de um objeto gerenciado (com base em uma tabela de método válida) e o objeto posterior ao endereço do argumento.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] Impede a execução de comandos não seguros durante o uso de um minidespejo.Prevents running unsafe commands when using a minidump.

Passe 0 para desabilitar esse recurso ou 1 para habilitar esse recurso.Pass 0 to disable this feature or 1 to enable this feature. Por padrão, o valor MinidumpMode é definido como 0.By default, the MinidumpMode value is set to 0.

Minidespejos criados com os comandos .dump /m ou .dump têm dados específicos limitados a CLR e permitem que você execute apenas um subconjunto de comandos SOS corretamente.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. Alguns comandos podem falhar com erros inesperados porque as áreas necessárias de memória não são mapeadas ou estão mapeadas apenas parcialmente.Some commands may fail with unexpected errors because required areas of memory are not mapped or are only partially mapped. Essa opção evita a execução de comandos não seguros em minidespejos.This option protects you from running unsafe commands against minidumps.
Name2EE <nome do módulo> <nome do tipo ou método>Name2EE <module name> <type or method name>

- ou --or-

Name2EE <nome do módulo> ! <nome do tipo ou método>Name2EE <module name>!<type or method name>
Exibe a estrutura MethodTable e a estrutura EEClass do tipo ou do método especificado no módulo especificado.Displays the MethodTable structure and EEClass structure for the specified type or method in the specified module.

O módulo especificado deve ser carregado no processo.The specified module must be loaded in the process.

Para obter o nome do tipo apropriado, procure o módulo usando o Ildasm.exe (IL Disassembler).To get the proper type name, browse the module by using the Ildasm.exe (IL Disassembler). Também é possível passar * como o parâmetro de nome do módulo para pesquisar todos os módulos gerenciados carregados.You can also pass * as the module name parameter to search all loaded managed modules. O parâmetro module name também pode ser o nome do depurador para um módulo, como mscorlib ou image00400000.The module name parameter can also be the debugger's name for a module, such as mscorlib or image00400000.

Este comando dá suporte à sintaxe do depurador do Windows de <module>!<type>.This command supports the Windows debugger syntax of <module>!<type>. O tipo deve estar totalmente qualificado.The type must be fully qualified.
ObjSize [<Object address>] | [ -aggregate] [ -stat]ObjSize [<Object address>] | [-aggregate] [-stat] Exibe o tamanho do objeto especificado.Displays the size of the specified object. Se você não especificar parâmetros, o comando ObjSize exibirá o tamanho de todos os objetos encontrados em threads gerenciados, exibirá todos os identificadores do coletor de lixo do processo e totalizará o tamanho de todos os objetos apontados por esses identificadores.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. O comando ObjSize inclui o tamanho de todos os objetos filho além do pai.The ObjSize command includes the size of all child objects in addition to the parent.

A opção -aggregate pode ser usada com o argumento -stat para obter uma exibição detalhada dos tipos que ainda têm raízes.The -aggregate option can be used in conjunction with the -stat argument to get a detailed view of the types that are still rooted. Usando !dumpheap -stat e !objsize -aggregate -stat, é possível determinar quais objetos não têm mais raízes e diagnosticar diversos problemas de memória.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] [<Endereço do objeto Exception>]PrintException [-nested] [-lines] [<Exception object address>]

- ou --or-

PE [ -nested] [<Endereço do objeto Exception>]PE [-nested] [<Exception object address>]
Exibe e formata campos de qualquer objeto derivado da classe Exception no endereço especificado.Displays and formats fields of any object derived from the Exception class at the specified address. Se você não especificar um endereço, o comando PrintException exibirá a última exceção gerada no thread atual.If you do not specify an address, the PrintException command displays the last exception thrown on the current thread.

A opção -nested exibe detalhes sobre objetos de exceção aninhados.The -nested option displays details about nested exception objects.

A opção -lines exibe informações da origem, se disponível.The -lines option displays source information, if available.

É possível usar esse comando para formatar e exibir o campo _stackTrace, que é uma matriz binária.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] Exibe variáveis de ambiente do processo, o tempo de CPU do kernel e as estatísticas de uso da memória.Displays environment variables for the process, kernel CPU time, and memory usage statistics.
RCWCleanupList <endereço de RCWCleanupList>RCWCleanupList <RCWCleanupList address> Exibe a lista de runtime callable wrappers no endereço especificado que aguardam limpeza.Displays the list of runtime callable wrappers at the specified address that are awaiting cleanup.
SaveModule <Endereço básico> <Filename>SaveModule <Base address> <Filename> Grava uma imagem, carregada na memória do endereço especificado, no arquivo especificado.Writes an image, which is loaded in memory at the specified address, to the specified file.
SOSFlushSOSFlush Libera um cache SOS interno.Flushes an internal SOS cache.
StopOnException [ -derived] [ -create | -create2] <Exception> <Número do pseudo-registro>StopOnException [-derived] [-create | -create2] <Exception> <Pseudo-register number> Faz com que o depurador pare quando a exceção especificada é lançada, mas continua executando enquanto outras exceções são lançadas.Causes the debugger to stop when the specified exception is thrown, but to continue running when other exceptions are thrown.

A opção -derived captura a exceção especificada e cada exceção derivada da exceção especificada.The -derived option catches the specified exception and every exception that derives from the specified exception.
SyncBlk [ -all | <número de syncblk>]SyncBlk [-all | <syncblk number>] Exibe a estrutura SyncBlock especificada ou todas as estruturas SyncBlock.Displays the specified SyncBlock structure or all SyncBlock structures. Se você não passar argumentos, o comando SyncBlk exibirá a estrutura SyncBlock correspondente aos objetos pertencentes a um thread.If you do not pass any arguments, the SyncBlk command displays the SyncBlock structure corresponding to objects that are owned by a thread.

Uma estrutura SyncBlock é um contêiner de informações extras que não precisa ser criada para cada objeto.A SyncBlock structure is a container for extra information that does not need to be created for every object. Ele pode armazenar dados de interoperabilidade COM, códigos de hash e informações de bloqueio para operações thread-safe.It can hold COM interop data, hash codes, and locking information for thread-safe operations.
ThreadPoolThreadPool Exibe informações sobre o pool de threads gerenciados, inclusive o número de solicitações de trabalho na fila, o número de threads de porta de conclusão e o número de timers.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 <nome do módulo> <token>Token2EE <module name> <token> Transforma o token de metadados especificado no módulo especificado em uma estrutura MethodTable ou na estrutura MethodDesc.Turns the specified metadata token in the specified module into a MethodTable structure or MethodDesc structure.

É possível passar * para o parâmetro de nome do módulo para saber para o que o token é mapeado em cada módulo gerenciado carregado.You can pass * for the module name parameter to find what that token maps to in every loaded managed module. Também é possível passar o nome do depurador para um módulo como, por exemplo, 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] Exibe todos os threads gerenciados no processo.Displays all managed threads in the process.

O comando Threads exibe a ID abreviada do depurador, a ID do thread do CLR e a ID do thread do sistema operacional.The Threads command displays the debugger shorthand ID, the CLR thread ID, and the operating system thread ID. Além disso, o comando Threads exibe uma coluna Domain que indica o domínio do aplicativo no qual um thread está em execução, uma coluna APT que exibe o modo apartment COM e uma coluna Exception que exibe a última exceção gerada no 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.

A opção -live exibe threads associados a um thread dinâmico.The -live option displays threads associated with a live thread.

A opção -special exibe todos os threads especiais criados pelo CLR.The -special option displays all special threads created by the CLR. Entre os threads especiais estão threads de coleta de lixo (em coleta de lixo simultânea e de servidor), threads auxiliares de depurador, threads finalizadores, threads de descarregamento AppDomain e threads de timer do pool de threads.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 < Campo do valor State >ThreadState < State value field > Exibe o estado do thread.Displays the state of the thread. O parâmetro value é o valor do campo State na saída de relatório Threads.The value parameter is the value of the State field in the Threads report output.

Exemplo: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> Grava informações do heap no arquivo especificado em um formato compreendido pelo do criador de perfil do CLR.Writes heap information to the specified file in a format understood by the CLR profiler. A opção -xml faz o comando TraverseHeap formatar o arquivo como XML.The -xml option causes the TraverseHeap command to format the file as XML.

Baixe o Criador de Perfil do CLR no Centro de Download da Microsoft.You can download the CLR Profiler from the Microsoft Download Center.
U [ -gcinfo] [ -ehinfo] [ -n] <endereço de MethodDesc> | <endereço de Code>U [-gcinfo] [-ehinfo] [-n] <MethodDesc address> | <Code address> Exibe uma desmontagem anotada de um método gerenciado especificado por um ponteiro de estrutura MethodDesc para o método ou por um endereço de código dentro do corpo do método.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. O comando U exibe todo o método do começo ao fim, com anotações que convertem tokens de metadados em nomes.The U command displays the entire method from start to finish, with annotations that convert metadata tokens to names.

A opção -gcinfo faz o comando U exibir a estrutura GCInfo do método.The -gcinfo option causes the U command to display the GCInfo structure for the method.

A opção -ehinfo exibe informações sobre exceção do método.The -ehinfo option displays exception information for the method. Também é possível pode obter essas informações com o comando EHInfo.You can also obtain this information with the EHInfo command.

A opção -n desabilita a exibição dos nomes de arquivo de origem e dos números de linha.The -n option disables the display of source file names and line numbers. Se o depurador tiver a opção SYMOPT_LOAD_LINES especificada, o SOS pesquisará os símbolos de cada quadro gerenciado e, se bem-sucedido, exibirá o nome do arquivo de origem e o número da linha correspondentes.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. Especifique a opção -n para desabilitar esse comportamento.You can specify the -n option to disable this behavior.
VerifyHeapVerifyHeap Verifica o heap do coletor de lixo em busca de sinais de corrupção e exibe todos os erros encontrados.Checks the garbage collector heap for signs of corruption and displays any errors found.

As corrupções de heap podem ser causadas por chamadas de invocação da plataforma construídas incorretamente.Heap corruptions can be caused by platform invoke calls that are constructed incorrectly.
VerifyObj <endereço do objeto>VerifyObj <object address> Verifica o objeto passado como um argumento em busca de sinais de corrupção.Checks the object that is passed as an argument for signs of corruption.
VMMapVMMap Atravessa o espaço do endereço virtual e exibe o tipo de proteção aplicado a cada região.Traverses the virtual address space and displays the type of protection applied to each region.
VMStatVMStat Fornece uma exibição resumida do espaço de endereço virtual, ordenado pelo tipo de proteção aplicado a essa memória (livre, reservada, confirmada, particular, mapeada, imagem).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). A coluna TOTAL exibe o resultado da coluna AVERAGE multiplicada pela coluna BLK COUNT.The TOTAL column displays the result of the AVERAGE column multiplied by the BLK COUNT column.

ComentáriosRemarks

A Extensão de Depuração SOS permite exibir informações sobre o código executado dentro do CLR.The SOS Debugging Extension lets you view information about code that is running inside the CLR. Por exemplo, é possível usar a Extensão de Depuração SOS para exibir informações sobre o heap gerenciado, procurar corrupções de heap, exibir tipos de dados internos usados pelo tempo de execução e exibir informações sobre todos os códigos gerenciados em execução dentro do tempo de execução.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.

Para usar a Extensão de Depuração SOS no Visual Studio, instale o WDK (Kit de Driver do Windows).To use the SOS Debugging Extension in Visual Studio, install the Windows Driver Kit (WDK). Para obter informações sobre o ambiente de depuração integrado no Visual Studio, confira Ambientes de Depuração.For information about the integrated debugging environment in Visual Studio, see Debugging Environments.

Também é possível usar a Extensão de Depuração SOS carregando-a no depurador WinDbg.exe e executando comandos dentro de WinDbg.exe.You can also use the SOS Debugging Extension by loading it into the WinDbg.exe debugger and executing commands within WinDbg.exe.

Para carregar a Extensão de Depuração SOS no depurador WinDbg.exe, execute o seguinte comando na ferramenta:To load the SOS Debugging Extension into the WinDbg.exe debugger, run the following command in the tool:

.loadby sos clr

WinDbg.exe e o Visual Studio usam uma versão de SOS.dll que corresponde à versão de Mscorwks.dll atualmente em uso.WinDbg.exe and Visual Studio use a version of SOS.dll that corresponds to the version of Mscorwks.dll currently in use. Por padrão, você deve usar a versão de SOS.dll correspondente à versão atual de Mscorwks.dll.By default, you should use the version of SOS.dll that matches the current version of Mscorwks.dll.

Para usar um arquivo de despejo criado em outro computador, verifique se o arquivo Mscorwks.dll que acompanha essa instalação está no caminho do símbolo e carregue a versão correspondente 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.

Para carregar uma versão específica de SOS.dll, digite o seguinte comando no Depurador do Windows:To load a specific version of SOS.dll, type the following command into the Windows Debugger:

.load <full path to sos.dll>

ExemplosExamples

O comando a seguir exibe o conteúdo de uma matriz no endereço 00ad28d0.The following command displays the contents of an array at the address 00ad28d0. A exibição começa pelo segundo elemento e continua por mais cinco elementos.The display starts from the second element and continues for five elements.

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

O comando a seguir exibe o conteúdo de um assembly no endereço 1ca248.The following command displays the contents of an assembly at the address 1ca248.

!dumpassembly 1ca248

O comando a seguir exibe informações sobre o heap do coletor de lixo.The following command displays information about the garbage collector heap.

!dumpheap

O comando a seguir grava o conteúdo do log de estresse na memória em um arquivo (padrão) chamado StressLog.txt no diretório atual.The following command writes the contents of the in-memory stress log to a (default) file called StressLog.txt in the current directory.

!DumpLog

O comando a seguir exibe a estrutura MethodDesc no endereço 902f40.The following command displays the MethodDesc structure at the address 902f40.

!dumpmd 902f40

O comando a seguir exibe informações sobre um módulo no endereço 1caa50.The following command displays information about a module at the address 1caa50.

!dumpmodule 1caa50

O comando a seguir exibe informações sobre um objeto no endereço a79d40.The following command displays information about an object at the address a79d40.

!DumpObj a79d40

O comando a seguir exibe os campos de uma classe de valor no endereço 00a79d9c usando a tabela de método no endereço 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

O comando a seguir exibe a memória do processo usada pelo coletor de lixo.The following command displays the process memory used by the garbage collector.

!eeheap -gc

O comando a seguir exibe todos os objetos programados para a finalização.The following command displays all objects scheduled for finalization.

!finalizequeue

O comando a seguir determina o domínio do aplicativo de um objeto no endereço 00a79d98.The following command determines the application domain of an object at the address 00a79d98.

!findappdomain 00a79d98

O comando a seguir exibe todos os identificadores do coletor de lixo no processo atual.The following command displays all garbage collector handles in the current process.

!gcinfo 5b68dbb8

O comando a seguir exibe as estruturas MethodTable e EEClass do método Main na classe MainClass do módulo 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

O comando a seguir exibe informações sobre o token de metadados no endereço 02000003 do módulo unittest.exe.The following command displays information about the metadata token at the address 02000003 in the module unittest.exe.

!token2ee unittest.exe 02000003

Consulte tambémSee also