Share via


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

Importante

Este artigo diz respeito à versão do .NET Framework da extensão de depuração SOS. Para obter informações sobre a versão mais recente do .NET (Core) da ferramenta, consulte Extensão de depuração SOS.

A extensão de depuração SOS (SOS.dll) ajuda você a depurar programas gerenciados no Visual Studio e no depurador do Windows (WinDbg.exe) fornecendo informações sobre o ambiente CLR (Common Language Runtime) interno. Essa ferramenta requer que seu projeto tenha a depuração não gerenciada habilitada. SOS.dll é instalado automaticamente com o .NET Framework. Para usar SOS.dll no Visual Studio, instale o Windows Driver Kit (WDK).

Sintaxe

![command] [options]

Comandos

Comando Description
AnalyzeOOM (ao) Exibe as informações da última falta de memória (OOM) que ocorreu em uma solicitação de alocação para a pilha de coleta de lixo. (Na coleta de lixo do servidor, ele exibe o OOM, se houver, em cada pilha de coleta de lixo.)
BPMD [-nofuturemodule] [<nome do método de nome><do> módulo] [-md><MethodDesc] -list-clear< pending breakpoint number-clearall> Cria um ponto de interrupção no método especificado no módulo especificado.

Se o módulo e o método especificados não tiverem sido carregados, este comando aguardará uma notificação de que o módulo foi carregado e compilado just-in-time (JIT) antes de criar um ponto de interrupção.

Você pode gerenciar a lista de pontos de interrupção pendentes usando as opções -list, -clear e -clearall :

A opção -list gera uma lista de todos os pontos de interrupção pendentes. Se um ponto de interrupção pendente tiver um ID de módulo diferente de zero, esse ponto de interrupção será específico para uma função nesse módulo carregado específico. Se o ponto de interrupção pendente tiver um ID de módulo zero, esse ponto de interrupção se aplicará aos módulos que ainda não foram carregados.

Use a opção -clear ou -clearall para remover pontos de interrupção pendentes da lista.
CLRStack [-a] [-l] [-p] [-n] Fornece um rastreamento de pilha somente de código gerenciado.

A opção -p mostra argumentos para a função gerenciada.

A opção -l mostra informações sobre variáveis locais em um quadro. A extensão de depuração SOS não pode recuperar nomes locais, portanto, a saída para nomes locais está no valor> de endereço<>=local de formato.<

A opção -a(all) é um atalho para -l e -p combinados.

A opção -n desativa a exibição de nomes de arquivos de origem e números de linha. Se o depurador tiver a opção SYMOPT_LOAD_LINES especificada, o SOS procurará os símbolos de cada quadro gerenciado e, se for bem-sucedido, exibirá o nome do arquivo de origem e o número da linha correspondentes. O parâmetro -n (Sem números de linha) pode ser especificado para desabilitar esse comportamento.

A extensão de depuração SOS não exibe quadros de transição em plataformas baseadas em x64 e IA-64.
COMState Lista o modelo de apartamento COM para cada thread e um Context ponteiro, se disponível.
DumpArray [-start<startIndex>] [-length<length>] [-details] [-nofields] <endereço do objeto da matriz>

-or-

DA [-start<startIndex>] [-length<length>] [-detail] [-nofields] endereço do objeto da matriz>
Examina elementos de um objeto de matriz.

A opção -start especifica o índice inicial no qual os elementos devem ser exibidos.

A opção -length especifica quantos elementos mostrar.

A opção -details exibe detalhes do elemento usando os formatos DumpObj e DumpVC .

A opção -nofields impede a exibição de matrizes. Esta opção só está disponível quando a opção -detail é especificada.
Endereço do assembly DumpAssembly<> Exibe informações sobre um assembly.

O comando DumpAssembly lista vários módulos, se existirem.

Você pode obter um endereço de assembly usando o comando DumpDomain .
Endereço DumpClass<EEClass> Exibe informações sobre a estrutura associada a EEClass um tipo.

O comando DumpClass exibe valores de campo estáticos, mas não exibe valores de campos não estáticos.

Use o comando DumpMT, DumpObj, Name2EE ou Token2EE para obter um endereço de EEClass estrutura.
DumpDomain [<endereço do domínio>] Enumera cada Assembly objeto que é carregado dentro do endereço de objeto especificado AppDomain . Quando chamado sem parâmetros, o comando DumpDomain lista todos os AppDomain objetos em um processo.
DumpHeap [-stat] [-strings] [-short] [-min<size>] [-max<size>] [-thinlock] [-startAtLowerBound] [-mt<MethodTable address>] [-type<partial type name>] [start [end]] Exibe informações sobre a pilha coletada de lixo e estatísticas de coleta sobre objetos.

O comando DumpHeap exibe um aviso se detetar fragmentação excessiva na pilha do coletor de lixo.

A opção -stat restringe a saída ao resumo do tipo estatístico.

A opção -strings restringe a saída a um resumo estatístico do valor da cadeia de caracteres.

A opção -short limita a saída apenas ao endereço de cada objeto. Isso permite que você canalize facilmente a saída do comando para outro comando do depurador para automação.

A opção -min ignora objetos que são menores que o size parâmetro, especificado em bytes (hex).

A opção -max ignora objetos maiores que o size parâmetro, especificado em bytes (hex).

A opção -thinlock informa ThinLocks. Para obter mais informações, consulte o comando SyncBlk .

A -startAtLowerBound opção força a caminhada da pilha a começar no limite inferior de um intervalo de endereços fornecido. Durante a fase de planejamento, a pilha muitas vezes não é caminhável porque os objetos estão sendo movidos. Essa opção força o DumpHeap a iniciar sua caminhada no limite inferior especificado. Você deve fornecer o endereço de um objeto válido como o limite inferior para que essa opção funcione. Você pode exibir a memória no endereço de um objeto incorreto para localizar manualmente a próxima tabela de método. 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, que é fornecido como um parâmetro.

A opção -mt lista apenas os objetos que correspondem à estrutura especificada MethodTable .

A opção -type lista apenas os objetos cujo nome do tipo é uma correspondência de substring da cadeia de caracteres especificada.

O start parâmetro começa a listar a partir do endereço especificado.

O end parâmetro para de listar no endereço especificado.
DumpIL<Managed DynamicMethod objeto | <>Ponteiro> DynamicMethodDesc | <Ponteiro MethodDesc> Exibe a linguagem intermediária comum (CIL) associada a um método gerenciado.

Observe que a CIL dinâmica é emitida de forma diferente da CIL que é carregada a partir de um assembly. CIL dinâmico refere-se a objetos em uma matriz de objetos gerenciados em vez de tokens de metadados.
DumpLog [-addr<addressOfStressLog>] [<Filenam]>e Grava o conteúdo de um log de estresse na memória no arquivo especificado. Se você não especificar um nome, esse comando criará um arquivo chamado StressLog.txt no diretório atual.

O registo de stress na memória ajuda-o a diagnosticar falhas de stress sem utilizar bloqueios ou E/S. Para habilitar o log de estresse, defina as seguintes chaves do Registro em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. NETFramework:

(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536

A opção opcional -addr permite especificar um log de estresse diferente do log padrão.
Endereço DumpMD<MethodDesc> Exibe informações sobre uma MethodDesc estrutura no endereço especificado.

Você pode usar o comando IP2MD para obter o MethodDesc endereço da estrutura de uma função gerenciada.
Endereço DumpMT [-MD] <MethodTable> Exibe informações sobre uma tabela de método no endereço especificado. Especificar a opção -MD exibe uma lista de todos os métodos definidos com o objeto.

Cada objeto gerenciado contém um ponteiro de tabela de método.
DumpMethodSig sigaddr<>moduleadd<r> Exibe informações sobre uma MethodSig estrutura no endereço especificado.
Endereço do módulo DumpModule [-mt] <> Exibe informações sobre um módulo no endereço especificado. A opção -mt exibe os tipos definidos em um módulo e os tipos referenciados pelo módulo

Você pode usar o comando DumpDomain ou DumpAssembly para recuperar o endereço de um módulo.
Endereço do objeto DumpObj [-nofields] <>

-or-

Endereço do objeto DO<>
Exibe informações sobre um objeto no endereço especificado. O comando DumpObj exibe os campos, as informações de EEClass estrutura, a tabela de método e o tamanho do objeto.

Você pode usar o comando DumpStackObjects para recuperar o endereço de um objeto.

Observe que você pode executar o comando DumpObj em campos do tipo CLASS porque eles também são objetos.

A -opção nofields impede que os campos do objeto sejam exibidos, é útil para objetos como String.
DumpRuntimeTypes Exibe os objetos de tipo de tempo de execução no heap do coletor de lixo e lista seus nomes de tipo associados e tabelas de método.
DumpStack [-EE] [-n] [toppilha [bottompilha]] Exibe um rastreamento de pilha.

A opção -EE faz com que o comando DumpStack exiba apenas funções gerenciadas. Use os top parâmetros e bottom para limitar os quadros de pilha exibidos em plataformas x86.

A opção -n desativa a exibição de nomes de arquivos de origem e números de linha. Se o depurador tiver a opção SYMOPT_LOAD_LINES especificada, o SOS procurará os símbolos de cada quadro gerenciado e, se for bem-sucedido, exibirá o nome do arquivo de origem e o número da linha correspondentes. O parâmetro -n (Sem números de linha) pode ser especificado para desabilitar esse comportamento.

Em plataformas x86 e x64, o comando DumpStack cria um rastreamento de pilha detalhado.

Em plataformas baseadas em IA-64, o comando DumpStack imita o comando K do depurador. Os top parâmetros e bottom são ignorados em plataformas baseadas em IA-64.
DumpSig<sigaddr<>moduleaddr> Exibe informações sobre uma Sig estrutura no endereço especificado.
DumpSigElem sigaddr<>moduleaddr<> Exibe um único elemento de um objeto de assinatura. Na maioria dos casos, você deve usar DumpSig para examinar objetos de assinatura individuais. No entanto, se uma assinatura foi corrompida de alguma forma, você pode usar DumpSigElem para ler as partes válidas dela.
DumpStackObjects [-verify] [toppilha [bottompilha]]

-or-

DSO [-verify] [toppilha [bottompilha]]
Exibe todos os objetos gerenciados encontrados dentro dos limites da pilha atual.

A opção -verify valida cada campo não estático CLASS de um campo de objeto.

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 e parâmetros locais.
Endereço DumpVC<MethodTable><> Exibe informações sobre os campos de uma classe de valor no endereço especificado.

O parâmetro MethodTable permite que o comando DumpVC interprete corretamente os campos. As classes de valor não têm uma tabela de método como seu primeiro campo.
EEHeap [-gc] [-carregador] Exibe informações sobre a memória de processo consumida por estruturas de dados CLR internas.

As opções -gc e -loader limitam a saída deste comando às estruturas de dados do coletor ou carregador de lixo.

As informações para o coletor de lixo listam os intervalos de cada segmento no heap gerenciado. Se o ponteiro estiver dentro de um intervalo de segmentos dado por -gc, o ponteiro será um ponteiro de objeto.
EEStack [-short] [-EE] Executa o comando DumpStack em todos os threads no processo.

A opção -EE é passada diretamente para o comando DumpStack . O parâmetro -short limita a saída aos seguintes tipos de threads:

Fios que tomaram um bloqueio.

Fios que foram parados para permitir uma recolha de lixo.

Threads que estão atualmente em código gerenciado.
EEVersion Exibe a versão CLR.
EHInfo [<Endereço MethodDesc>] [<Endereço do código>] Exibe os blocos de tratamento de exceção em um método especificado. Este comando exibe os endereços de código e deslocamentos para o bloco de cláusula (o try bloco) e o bloco do manipulador (o catch bloco).
FAQ Exibe perguntas frequentes.
FinalizeQueue [-detalhe] | [-allReady] [-curto] Exibe todos os objetos registrados para finalização.

A opção -detail exibe informações extras sobre qualquer SyncBlocks um que precise ser limpo e qualquer RuntimeCallableWrappers (RCWs) que aguarde limpeza. Ambas as estruturas de dados são armazenadas em cache e limpas pelo thread do finalizador quando ele é executado.

A -allReady opção exibe todos os objetos que estão prontos para finalização, independentemente de já estarem marcados pela coleta de lixo como tal, ou serem marcados pela próxima coleta de lixo. Os objetos que estão na lista "pronto para finalização" são objetos finalizáveis que não estão mais enraizados. Essa opção pode ser muito cara, pois verifica se todos os objetos nas filas finalizáveis ainda estão enraizados.

A -short opção limita a saída ao endereço de cada objeto. Se for usado em conjunto com -allReady, ele enumerará todos os objetos que têm um finalizador que não estão mais enraizados. Se for usado de forma independente, ele lista todos os objetos nas filas finalizáveis e "prontos para finalização".
Endereço do objeto FindAppDomain<> Determina o domínio do aplicativo de um objeto no endereço especificado.
FindRoots-gen< N | >-geração qualquer |<Endereço do objeto> Faz com que o depurador quebre no depurador na próxima coleção da geração especificada. O efeito é reposto assim que ocorre a interrupção. Para quebrar na próxima coleção, você tem que reemitir o comando. A <forma de endereço> do objeto deste comando é usada após a interrupção causada pelo -gen ou -gen any ter ocorrido. Nesse momento, o debuggee está no estado certo para o FindRoots identificar raízes para objetos das atuais gerações condenadas.
GCHandles [-perdomínio] Exibe estatísticas sobre as alças do coletor de lixo no processo.

A opção -perdomain organiza as estatísticas por domínio de aplicativo.

Use o comando GCHandles para encontrar vazamentos de memória causados por vazamentos no identificador do coletor de lixo. Por exemplo, um vazamento de memória ocorre quando o código retém uma grande matriz porque uma alça de coletor de lixo forte ainda aponta para ela e a alça é descartada sem liberá-la.
GCHandleLeaks Procura na memória quaisquer referências a identificadores de coletor de lixo fortes e fixados no processo e exibe os resultados. Se um identificador for encontrado, o comando GCHandleLeaks exibirá o endereço da referência. Se um identificador não for encontrado na memória, esse comando exibirá uma notificação.
Endereço GCInfo<MethodDesc><Endereço do código> Exibe dados que indicam quando os registros ou locais de pilha contêm objetos gerenciados. Se ocorrer uma coleta de lixo, o coletor deve conhecer os locais das referências a objetos para que possa atualizá-los com novos valores de ponteiro de objeto.
GCRoot [-nostacks] <Endereço do objeto> Exibe informações sobre referências (ou raízes) a um objeto no endereço especificado.

O comando GCRoot examina todo o heap gerenciado e a tabela de identificadores em busca de identificadores dentro de outros objetos e identificadores na pilha. Cada pilha é então pesquisada por ponteiros para objetos, e a fila do finalizador também é pesquisada.

Este comando não determina se uma raiz de pilha é válida ou é descartada. Use os comandos CLRStack e U para desmontar o quadro ao qual o valor local ou argumento pertence para determinar se a raiz da pilha ainda está em uso.

A opção -nostacks restringe a pesquisa a alças de coletor de lixo e objetos acessíveis.
Endereço do objeto GCWhere<> Exibe o local e o tamanho na pilha de coleta de lixo do argumento passado. Quando o argumento está no heap gerenciado, mas não é um endereço de objeto válido, o tamanho é exibido como 0 (zero).
ajuda [<comando>] [faq] Exibe todos os comandos disponíveis quando nenhum parâmetro é especificado ou exibe informações de ajuda detalhadas sobre o comando especificado.

O faq parâmetro exibe respostas para perguntas frequentes.
HeapStat [-inclUnrooted-iu | ] Exibe os tamanhos de geração para cada pilha e o espaço livre total em cada geração em cada pilha. Se a opção -inclUnroot for especificada, o relatório incluirá informações sobre os objetos gerenciados do heap de coleta de lixo que não está mais enraizado.
HistClear Libera todos os recursos usados pela família de Hist comandos.

Geralmente, você não precisa chamar HistClearexplicitamente , porque cada HistInit um limpa os recursos anteriores.
HistInit Inicializa as estruturas SOS a partir do log de estresse salvo no depurador.
HistObj<obj_address> Examina todos os registros de realocação de log de estresse e exibe a cadeia de relocações de coleta de lixo que podem ter levado ao endereço passado como um argumento.
HistObjEncontre<obj_address> Exibe todas as entradas de log que fazem referência a um objeto no endereço especificado.
Raiz de HistRoot<> Exibe informações relacionadas a promoções e realocações da raiz especificada.

O valor raiz pode ser usado para rastrear o movimento de um objeto através das coletas de lixo.
Endereço do código IP2MD<> Exibe a MethodDesc estrutura no endereço especificado no código que foi compilado em JIT.
ListNearObj (lno) <obj_address> Exibe os objetos anteriores e posteriores ao endereço especificado. O comando procura o endereço no heap de coleta de lixo que se parece com um início válido de um objeto gerenciado (com base em uma tabela de método válida) e o objeto que segue o endereço do argumento.
MinidumpMode [0] [1] Impede a execução de comandos inseguros ao usar um minidump.

Passe 0 para desativar esse recurso ou 1 para habilitá-lo. Por padrão, o valor MinidumpMode é definido como 0.

Os minidumps criados com o comando .dump /m ou .dump têm dados específicos do CLR limitados e permitem que você execute apenas um subconjunto de comandos SOS corretamente. Alguns comandos podem falhar com erros inesperados porque as áreas necessárias de memória não são mapeadas ou são apenas parcialmente mapeadas. Esta opção protege você contra a execução de comandos inseguros contra minidumps.
Name2EE<nome<>do módulo tipo ou nome do método>

-or-

Nome do módulo> Name2EE!<<Nome do tipo ou método>
Exibe a estrutura e EEClass a MethodTable estrutura para o tipo ou método especificado no módulo especificado.

O módulo especificado deve ser carregado no processo.

Para obter o nome de tipo adequado, procure o módulo usando o Ildasm.exe (IL Disassembler). Você também pode passar * como o parâmetro de nome do módulo para pesquisar todos os módulos gerenciados carregados. O parâmetro module name também pode ser o nome do depurador para um módulo, como mscorlib ou image00400000.

Este comando suporta a sintaxe do depurador do Windows de <<module>>!type. O tipo deve ser plenamente qualificado.
ObjSize [<Endereço do> objeto] | [-agregado] [-stat] Exibe o tamanho do objeto especificado. Se você não especificar nenhum parâmetro, o comando ObjSize exibirá o tamanho de todos os objetos encontrados em threads gerenciados, exibirá todas as alças do coletor de lixo no processo e totalizará o tamanho de todos os objetos apontados por essas alças. O comando ObjSize inclui o tamanho de todos os objetos filho, além do pai.

A opção -aggregate pode ser usada em conjunto com o argumento -stat para obter uma visão detalhada dos tipos que ainda estão enraizados. Usando !dumpheap -stat e !objsize -aggregate -stat, você pode determinar quais objetos não estão mais enraizados e diagnosticar vários problemas de memória.
PrintException [-nested] [-lines] [<Endereço do objeto> de exceção]

-or-

PE [-nested] [<Endereço do objeto> de exceção]
Exibe e formata campos de qualquer objeto derivado da Exception classe no endereço especificado. Se você não especificar um endereço, o comando PrintException exibirá a última exceção lançada no thread atual.

A opção -nested exibe detalhes sobre objetos de exceção aninhados.

A opção -lines exibe informações de origem, se disponíveis.

Você pode usar esse comando para formatar e exibir o _stackTrace campo, que é uma matriz binária.
ProcInfo [-env] [-time] [-mem] Exibe variáveis de ambiente para o processo, tempo de CPU do kernel e estatísticas de uso de memória.
Endereço RCWCleanupList<RCWCleanupList> Exibe a lista de wrappers chamáveis em tempo de execução no endereço especificado que estão aguardando limpeza.
Endereço base<>SaveModule<Nome do arquivo> Grava uma imagem, que é carregada na memória no endereço especificado, no arquivo especificado.
SOSFlush Libera um cache SOS interno.
StopOnException [-derived] [-create-create2 | ] <Número de pseudo-registro da exceção><> Faz com que o depurador pare quando a exceção especificada é lançada, mas continue em execução quando outras exceções são lançadas.

A opção derivada captura a exceção especificada e todas as exceções derivadas da exceção especificada.
SyncBlk [-todos | <número> syncblk] Exibe a estrutura especificada SyncBlock ou todas as SyncBlock estruturas. Se você não passar nenhum argumento, o comando SyncBlk exibirá a SyncBlock estrutura correspondente aos objetos que pertencem a um thread.

Uma SyncBlock estrutura é um contêiner para informações extras que não precisam ser criadas para cada objeto. Ele pode conter dados de interoperabilidade COM, códigos hash e informações de bloqueio para operações seguras para threads.
ThreadPool Exibe informações sobre o pool de threads gerenciados, incluindo 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 temporizadores.
Token de nome do<>módulo Token2EE<> Transforma o token de metadados especificado no módulo especificado em uma MethodTable estrutura ou MethodDesc estrutura.

Você pode passar * para o parâmetro de nome do módulo para encontrar o que esse token mapeia em cada módulo gerenciado carregado. Você também pode passar o nome do depurador para um módulo, como mscorlib ou image00400000.
Tópicos [-live] [-special] Exibe todos os threads gerenciados no processo.

O comando Threads exibe a ID abreviada do depurador, a ID do thread CLR e a ID do thread do sistema operacional. Além disso, o comando Threads exibe uma coluna Domain que indica o domínio do aplicativo no qual um thread está sendo executado, uma coluna APT que exibe o modo de apartamento COM e uma coluna Exception que exibe a última exceção lançada no thread.

A opção -live exibe threads associados a um thread ao vivo.

A opção -special exibe todos os threads especiais criados pelo CLR. Os threads especiais incluem threads de coleta de lixo (na coleta de lixo simultânea e no servidor), threads auxiliares do depurador, threads do finalizador, AppDomain threads de descarga e threads de timer do pool de threads.
Campo de valor ThreadState <State> Exibe o estado do thread. O value parâmetro é o State valor do campo na saída do relatório Threads .

Exemplo:

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
Nome do arquivo TraverseHeap [-xml] <> Grava informações de pilha no arquivo especificado em um formato compreendido pelo criador de perfil CLR. A opção -xml faz com que o comando TraverseHeap formate o arquivo como XML.
U [-gcinfo] [-ehinfo] [-n]< Endereço> MethodDesc | <Endereço do código> Exibe uma desmontagem anotada de um método gerenciado especificado por um MethodDesc ponteiro de estrutura para o método ou por um endereço de código dentro do corpo do método. O comando U exibe todo o método do início ao fim, com anotações que convertem tokens de metadados em nomes.

A opção -gcinfo faz com que o comando U exiba a GCInfo estrutura do método.

A opção -ehinfo exibe informações de exceção para o método. Você também pode obter essas informações com o comando EHInfo .

A opção -n desativa a exibição de nomes de arquivos de origem e números de linha. Se o depurador tiver a opção SYMOPT_LOAD_LINES especificada, o SOS procurará os símbolos de cada quadro gerenciado e, se for bem-sucedido, exibirá o nome do arquivo de origem e o número da linha correspondentes. Você pode especificar a opção -n para desabilitar esse comportamento.
VerifyHeap Verifica a pilha do coletor de lixo em busca de sinais de corrupção e exibe todos os erros encontrados.

As corrupções de heap podem ser causadas por chamadas de invocação de plataforma que são construídas incorretamente.
Endereço do objeto VerifyObj<> Verifica o objeto que é passado como um argumento para sinais de corrupção.
VMMap Atravessa o espaço de endereço virtual e exibe o tipo de proteção aplicada a cada região.
VMStat Fornece uma visão resumida do espaço de endereço virtual, ordenado por cada tipo de proteção aplicada a essa memória (livre, reservado, confirmado, privado, mapeado, imagem). A coluna TOTAL exibe o resultado da coluna MÉDIA multiplicada pela coluna BLK COUNT.

Observações

A extensão de depuração SOS permite exibir informações sobre o código que está sendo executado dentro do CLR. Por exemplo, você pode 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 todo o código gerenciado em execução dentro do tempo de execução.

Para usar a extensão de depuração SOS no Visual Studio, instale o Windows Driver Kit (WDK). Para obter informações sobre o ambiente de depuração integrado no Visual Studio, consulte Ambientes de depuração.

Você também pode usar a Extensão de Depuração SOS carregando-a no depurador WinDbg.exe e executando comandos dentro WinDbg.exe.

Para carregar a extensão de depuração SOS no depurador WinDbg.exe, execute o seguinte comando na ferramenta:

.loadby sos clr

WinDbg.exe e Visual Studio usam uma versão do SOS.dll que corresponde à versão do Mscorwks.dll atualmente em uso. Por padrão, você deve usar a versão do SOS.dll que corresponde à versão atual do Mscorwks.dll.

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

Para carregar uma versão específica do SOS.dll, digite o seguinte comando no depurador do Windows:

.load <full path to sos.dll>

Exemplos

O comando a seguir exibe o conteúdo de uma matriz no endereço 00ad28d0. A exibição começa a partir do segundo elemento e continua por cinco elementos.

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

O comando a seguir exibe o conteúdo de um assembly no endereço 1ca248.

!dumpassembly 1ca248

O comando a seguir exibe informações sobre a pilha do coletor de lixo.

!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.

!DumpLog

O comando a seguir exibe a MethodDesc estrutura no endereço 902f40.

!dumpmd 902f40

O comando a seguir exibe informações sobre um módulo no endereço 1caa50.

!dumpmodule 1caa50

O comando a seguir exibe informações sobre um objeto no endereço 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.

!DumpVC 0090320c 00a79d9c

O comando a seguir exibe a memória de processo usada pelo coletor de lixo.

!eeheap -gc

O comando a seguir exibe todos os objetos agendados para finalização.

!finalizequeue

O comando a seguir determina o domínio do aplicativo de um objeto no endereço 00a79d98.

!findappdomain 00a79d98

O comando a seguir exibe todas as alças do coletor de lixo no processo atual.

!gcinfo 5b68dbb8

O comando a seguir exibe as estruturas e EEClass para o Main método na classe MainClass no módulo unittest.exe.MethodTable

!name2ee unittest.exe MainClass.Main

O comando a seguir exibe informações sobre o token de metadados no endereço 02000003 no módulo unittest.exe.

!token2ee unittest.exe 02000003

Consulte também