Compartilhar via


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

A extensão de depuração SOS (SOS. dll) ajuda a depurar programas gerenciados no depurador WinDBG. exe e, em Visual Studio, fornecendo informações sobre o ambiente interno do common language runtime (CLR).

A extensão de depuração SOS é instalada automaticamente com Visual Studio e exige o seu projeto para que a depuração não gerenciada ativadas. Você também pode usar a extensão de depuração SOS com o depurador do Windows (WinDbg).

![command] [options] 

Comandos

Comando

Descrição

AnalyzeOOM (ao)

Exibe as informações para a última OOM ocorridos em uma solicitação de alocação de heap de coleta de lixo. (Coleta de lixo do servidor, ele exibe OOM, se houver, em cada pilha de coleta de lixo.)

BPMD -nofuturemodule] [<module name> <nome do método>]-md <MethodDesc>-list -clear <o número de ponto de interrupção pendente> -clearall

Cria um ponto de interrupção no método especificado no módulo especificado.

Se o módulo especificado e o método não foi carregados, esse comando aguarda uma notificação de que o módulo foi carregado e just-in-time (JIT) compilado antes de criar um ponto de interrupção.

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

  • O -list opção gera uma lista de todos os pontos de interrupção pendente. Se um ponto de interrupção pendente tiver uma identificação de módulo de diferente de zero, aquele ponto de interrupção é específico para uma função em determinado módulo carregado. Se o ponto de interrupção pendente possui uma identificação de módulo zero, aquele ponto de interrupção aplica-se aos módulos ainda não foram carregados.

  • Use o -clear ou -clearall opção para remover pendentes pontos de interrupção da lista.

CLRStack [-a] [-l] [-p] [-n]

Fornece um rastreamento de pilha de somente para código gerenciado.

  • O -p opção mostra os argumentos para a função gerenciada.

  • O -l opção mostra informações sobre variáveis locais em um quadro. A extensão de depuração SOS não é possível recuperar os nomes de locais, para que a saída para nomes de locais está no formato <endereço local> =<value>.

  • O -a opção (tudo) é um atalho para -l e -p combinados.

  • O -n opção desativa a exibição de nomes de arquivo de origem e de números de linha. Se o depurador tem a opção SYMOPT_LOAD_LINES especificado, o SOS consultará os símbolos para cada quadro gerenciado e se for bem-sucedido exibirá o correspondente arquivo nome e a linha número de origem. O -n (números de linha) pode ser especificado para desativar esse comportamento.

A extensão de depuração SOS não exibe quadros de transição em determinadas plataformas baseadas em IA-64 e x64.

COMState

Lista o modelo de apartment COM para cada segmento e um Context o ponteiro, se disponível.

DumpArray-start <startIndex>]-length <length>]-details] [-nofields] <array object address>

- ou -

DA-start <startIndex>]-length <length>]-detail] [-nofieldsarray object address>

Examina os elementos de um objeto array.

  • O -start opção especifica o índice inicial no qual exibir elementos.

  • O -length opção especifica quantos elementos para mostrar.

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

  • O -nofields opção impede que os arrays exibindo. Esta opção só estará disponível quando o -detail opção é especificada.

DumpAssembly<endereço do assembly>

Exibe informações sobre um assembly.

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

Você pode obter um endereço de assembly usando o DumpDomain comando.

DumpClass<EEClass endereço>

Exibe informações sobre o EEClass estrutura associado com um tipo.

O DumpClass comando exibe os valores de campo estático, mas não exibe valores de campo não estático.

Use o DumpMT, DumpObj, Name2EE, ou Token2EE comando para obter um EEClass endereço da estrutura.

DumpDomain<endereço de domínio>]

Enumera cada Assembly de objeto que é carregado dentro especificado AppDomain endereço do objeto. Quando chamado sem parâmetros, o DumpDomain comando 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 as coleta de lixo heap e coleta estatísticas sobre objetos.

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

  • O -stat opção restringe a saída para o tipo de estatístico de resumo.

  • O -strings opção restringe a saída para um resumo de valor de seqüência de caracteres de estatística.

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

  • O -min opção ignora a objetos que são menos do que size parâmetro, especificado em bytes.

  • O -max opção ignora a objetos que são maiores do que o size parâmetro, especificado em bytes.

  • O -thinlock opção relatórios ThinLocks. Para obter mais informações, consulte o SyncBlk comando.

  • O -startAtLowerBound opção força a movimentação de pilha para começar ao limite inferior de um intervalo de endereço fornecido. Durante a fase de planejamento, a pilha nem sempre é walkable porque os objetos que estão sendo movidos. Essa opção força DumpHeap para começar sua movimentação no limite inferior especificado. Você deve fornecer o endereço de um objeto válido como o limite inferior para esta opção para trabalhar. Você pode exibir a memória no endereço de um objeto inválido para encontrar manualmente a próxima tabela de método. Se a coleta de lixo está em uma chamada para memcopy, também é possível localizar o endereço do objeto, adicionando o tamanho para o endereço de início, que é fornecido como um parâmetro.

  • O -mt opção lista apenas os objetos que correspondam ao especificado MethodTable estrutura.

  • O -type opção lista apenas os objetos cujo nome de tipo é uma correspondência de subseqüência da seqüência especificada.

  • O start parâmetro começa a listagem do endereço especificado.

  • O end parâmetro pára de listagem no endereço especificado.

DumpIL<DynamicMethod gerenciado objeto> | <o ponteiro de DynamicMethodDesc> | <o ponteiro de MethodDesc>

Exibe o Microsoft intermediate language (MSIL) que está associado um método gerenciado.

Observe que o MSIL dinâmico é emitida diferente MSIL é carregado a partir de um assembly. MSIL dinâmico refere-se a objetos em uma matriz de objeto gerenciado em vez de tokens de metadados.

DumpLog-addr <addressOfStressLog>] [<Filename>]

Grava o conteúdo de um log de estresse de na memória para o arquivo especificado. Se você não especificar um nome, este comando cria um arquivo chamado StressLog.txt no diretório atual.

O log de memória stress ajuda a diagnosticar falhas de estresse sem usar bloqueios ou e/S. Para habilitar o log de stress, defina as seguintes chaves de registro em HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework:

(DWORD) StressLog = 1

(DWORD) LogFacility = 0xffffffff

(DWORD) StressLogSize = 65536

Opcional -addr opção permite que você especificar um log de stress diferente o log do padrão.

DumpMD<MethodDesc endereço>

Exibe informações sobre um MethodDesc estrutura no endereço especificado.

Você pode usar o IP2MD comando para obter o MethodDesc endereço da estrutura de uma função gerenciada.

DumpMT-MD] <MethodTable endereço>

Exibe informações sobre uma tabela de método no endereço especificado. Especificando a -MD opção 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> <moduleaddr>

Exibe informações sobre um MethodSig estrutura no endereço especificado.

DumpModule-mt] <endereço do módulo>

Exibe informações sobre um módulo no endereço especificado. O -mt opção exibe os tipos definidos em um módulo e os tipos referenciados pelo módulo

Você pode usar o DumpDomain ou DumpAssembly comando para recuperar o endereço de. um módulo

DumpObj-nofields] <endereço do objeto>

- ou -

DO<endereço do objeto>

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

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

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

O -nofields opção impede que os campos do objeto que está sendo exibido, é útil para objetos, como a seqüência de caracteres.

DumpRuntimeTypes

Exibe os objetos do tipo de tempo de execução na pilha de coletor de lixo e lista seus nomes de tipos associados e tabelas de método.

DumpStack-EE] [-n] [top stackbottom stack]

Exibe um rastreamento de pilha.

  • O -EE opção faz com que o DumpStack comando para exibir apenas gerenciado funções. Use o top e bottom parâmetros para limitar os quadros de pilha exibidos no x86 plataformas.

  • O -n opção desativa a exibição de nomes de arquivo de origem e de números de linha. Se o depurador tem a opção SYMOPT_LOAD_LINES especificado, o SOS consultará os símbolos para cada quadro gerenciado e se for bem-sucedido exibirá o correspondente arquivo nome e a linha número de origem. O -n (números de linha) pode ser especificado para desativar esse comportamento.

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

Em plataformas baseadas em IA-64, a DumpStack comando imita o depurador K comando. O top e bottom parâmetros serão ignorados em plataformas baseadas em IA-64.

DumpSig<sigaddr> <moduleaddr>

Exibe informações sobre um 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 todos os objetos assinatura individual. No entanto, se uma assinatura tiver sido corrompida de alguma forma, você pode usar DumpSigElem para ler as partes válidas do paragrafo.

DumpStackObjects-verify] [top stackbottom stack]

- ou -

DSO-verify] [top stackbottom stack]

Exibe todos os objetos gerenciados encontrados dentro dos limites da pilha atual.

O -verify opção valida cada non-static CLASS campo de um campo de objeto.

Use o DumpStackObject de comando com comandos de rastreamento de pilha, como o K comando e o CLRStack comando para determinar os valores das variáveis locais e parâmetros.

DumpVC<MethodTable endereço> <endereço>

Exibe informações sobre os campos de uma classe de valor no endereço especificado.

O MethodTable parâmetro permite que o DumpVC comando para interpretar corretamente campos. Classes de valor não tem uma tabela do método como seu primeiro campo.

EEHeap [-gc] [-loader]

Exibe informações sobre a memória consumida por estruturas de dados common language runtime internas do processo.

O -gc e -loader Opções de limitam a saída desse comando para o coletor de lixo ou estruturas de dados do carregador.

As informações para o coletor de lixo listam os intervalos de cada segmento no heap gerenciado. Se o ponteiro cair dentro de um intervalo de segmento dado por -gc, o ponteiro é um ponteiro de objeto.

EEStack [-short] [-EE]

Executa o DumpStack comando em todos os segmentos no processo.

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

  • Segmentos que tiveram um bloqueio.

  • Threads que tenham sido interrompidos para permitir uma coleta de lixo.

  • Segmentos que estão atualmente em código gerenciado.

EEVersion

Exibe a versão de tempo de execução de linguagem comum.

EHInfo<MethodDesc endereço>] [<código endereço>]

Exibe a blocos de um método especificado de manipulação de exceção. Este comando exibe os endereços de código e os deslocamentos para o bloco de cláusula (o try bloco) e o bloco do manipulador (o catch block).

FAQ

Exibe perguntas freqüentes.

FinalizeQueue [-detail] | [-allReady] [-short]

Exibe todos os objetos registrados para finalização.

  • O -detail opção exibe informações extras sobre qualquer SyncBlocks que precisam ser limpos e qualquer RuntimeCallableWrappers (RCWs) que aguardar a limpeza. Ambas essas estruturas de dados são armazenados em cache e limpos pelo thread finalizador, quando ele é executado.

  • O -allReady opção exibe todos os objetos que estão prontos para finalização, independentemente de eles já são marcados por como tal, a coleta de lixo ou serão marcados pela próxima coleta de lixo. Os objetos que não estão na "pronto para finalização" lista são objetos finalizáveis que não há mais como raiz. Esta opção pode ser muito cara, pois ele verifica se todos os objetos finalizáveis filas ainda têm como raiz.

  • O -short opção limita a saída para o endereço de cada objeto. Se for usado em conjunto com -allReady, ele enumera todos os objetos que possuem um finalizador que não há mais como raiz. Se ele é usado de forma independente, ela lista todos os objetos finalizáveis e "pronto para finalização" filas.

FindAppDomain<endereço do objeto>

Determina o domínio de aplicativo de um objeto no endereço especificado.

FindRoots -gen <N> | -gen any |<endereço do objeto>

Faz com que o depurador romper o depurado na próxima coleta da geração especificada. O efeito é redefinido como ocorre a quebra. Para interromper a próxima coleta, é necessário que você envie novamente o comando. O < endereço de objeto > o formulário deste comando é usado depois da quebra causada pela -gen ou -gen any ocorreu. Nesse momento, o depurado está no estado correto para FindRoots para identificar as raízes de objetos a partir do atual condemned gerações.

GCHandles [-perdomain]

Exibe estatísticas sobre alças do coletor de lixo no processo.

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

Use o GCHandles o comando localizar vazamentos de memória causados pelo coletor de lixo alça vazamentos. Por exemplo, um vazamento de memória ocorre quando o código mantém um grande array porque um identificador de alta segurança coletor de lixo ainda aponta para ele e o identificador será descartado sem liberando-a.

GCHandleLeaks

Pesquisa de memória para quaisquer referências para identificadores do coletor de lixo forte e fixados no processo e exibe os resultados. Se um identificador for encontrado, o GCHandleLeaks comando exibe o endereço de referência. Se um identificador não for encontrado na memória, este comando exibe uma notificação.

GCInfo<MethodDesc endereço><código endereço>

Exibe os dados que indica quando registra ou pilha locais contêm objetos gerenciados. Se uma coleta de lixo ocorre, o coletor deve saber os locais das referências a objetos, para que ele pode ser atualizado com novos valores de ponteiro de objeto.

GCRoot-nostacks] <endereço do objeto>

Exibe informações sobre referências (ou raízes) para um objeto no endereço especificado.

O GCRoot comando examina toda a heap gerenciada e a tabela de identificadores para identificadores dentro de outros objetos e alças na pilha. Cada pilha deve ser procurada ponteiros para objetos e a fila de finalizadores também é pesquisada.

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

O -nostacks opção restringe a pesquisa às alças de coletor de lixo e freachable objetos.

GCWhere < endereço de objeto >

Exibe o local e tamanho no heap de coleta de lixo do argumento passado. Quando o argumento se encontra no heap gerenciado, mas não é um endereço válido de objeto, o tamanho é exibido como 0 (zero).

help<command>]faq]

Exibe todos os comandos disponíveis quando nenhum parâmetro for especificado ou exibe ajuda informações detalhadas sobre o comando especificado.

O faq parâmetro exibe respostas para perguntas freqüentes.

HeapStat [-inclUnrooted | -iu]

Exibe os tamanhos de geração para cada pilha e o total de espaço livre em cada geração em cada pilha. Se a opção -inclUnrooted opção for especificada, o relatório inclui informações sobre os objetos gerenciados a partir do heap de coleta de lixo não está enraizada.

HistClear

Libera todos os recursos usados pela família de Hist comandos.

Geralmente, você não precisa chamar explicitamente HistClear, porque cada HistInit limpa recursos anterior.

HistInit

Inicializa as estruturas de SOS do log de stress salvo no elemento a ser depurado.

HistObj <obj_address>

Examina todos os registros de realocação de log de estresse e exibe a cadeia de realocações de coleta de lixo pode levaram ao endereço passado como um argumento.

HisttObjFind <obj_address>

Exibe todas as entradas de log que fazem referência a um objeto no endereço especificado.

HistRoot <root>

Exibe informações relacionadas a realocações da raiz especificada e promoções.

O valor de raiz pode ser usado para controlar o movimento de um objeto por meio de coletas de lixo.

IP2MD<código endereço>

Exibe o MethodDesc estrutura no endereço especificado no código que foi compilado em JIT.

ListNearObj(lno) <obj_address>

Exibe os objetos antes e após o endereço especificado. O comando procura o endereço na pilha 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álido) e o objeto seguindo o endereço do argumento.

MinidumpMode [0] [1]

Impede a execução de comandos não seguros ao usar um minidespejo.

Passar 0 para desativar esse recurso ou 1 para habilitar esse recurso. Por padrão, o MinidumpMode valor é definido como 0.

Minidumps criados com o .dump /m comando ou .dump comando limitaram a dados específicos do CLR e permitem que você execute apenas um subconjunto de comandos de SOS corretamente. Alguns comandos podem falhar com erros inesperados porque necessário áreas da memória não são mapeadas ou apenas parcialmente são mapeadas. Esta opção protege você de executar comandos não seguros contra minidumps.

Name2EE<nome do módulo> <nome de tipo ou método>

- ou -

Name2EE<nome do módulo>!<nome de tipo ou método>

Exibe o MethodTable estrutura e EEClass estrutura para o tipo especificado ou o método no módulo especificado.

O módulo especificado deve ser carregado no processo.

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

Este comando oferece suporte a sintaxe de depurador do Windows do <module>!<type>. O tipo deve ser totalmente qualificado.

ObjSize<Endereço do objeto>] |-aggregate] [-stat]

Exibe o tamanho do objeto especificado. Se você não especificar os parâmetros do ObjSize comando exibe o tamanho de todos os objetos encontrados em threads gerenciados, exibe todos os identificadores de coletor de lixo no processo e o tamanho de todos os objetos de totais apontada por essas alças. O ObjSize comando inclui o tamanho de todos os objetos filho e pai.

O -aggregate opção pode ser usada em conjunto com o -stat argumento para obter uma visão detalhada dos tipos que ainda como raiz. Usando !dumpheap -stat e !objsize -aggregate -stat, você pode determinar quais objetos não têm raiz e diagnosticar diversos problemas de memória.

PrintException-nested] [-lines] [<endereço do objeto de exceção>]

- ou -

PE-nested] [<endereço do objeto de exceção>]

Exibe e formata campos de qualquer objeto derivado de Exception classe no endereço especificado. Se você não especificar um endereço, o PrintException comando exibe a última exceção acionada no segmento atual.

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

  • O -lines opção exibe informações de origem, se disponível.

Você pode usar este comando para formatar e exibir o _stackTrace campo, que é uma matriz binária.

ProcInfo [-env] [-time] [-mem]

Exibe as variáveis de ambiente para o processo, o tempo de CPU do kernel e estatísticas de uso de memória.

RCWCleanupList<RCWCleanupList endereço>

Exibe a lista de runtime callable wrappers no endereço especificado que estão aguardando a limpeza.

SaveModule<endereço base> <nome de arquivo>

Grava uma imagem, que é carregada na memória no endereço especificado, o arquivo especificado.

SOSFlush

Libera um cache interno do SOS.

StopOnException [-derived] [-create | -create2] <exceção> <o número de pseudo-registro>

Faz com que o depurador para parar quando a exceção especificada é lançada, mas continuar a executar quando outras exceções são lançadas.

O -derived opção captura a exceção especificada e todas as exceções que deriva de exceção especificado.

SyncBlk-all | <o número de syncblk>]

Exibe o especificado SyncBlock estrutura ou todos os SyncBlock estruturas. Se você não passar argumentos, o SyncBlk comando exibe o SyncBlock estrutura correspondente para objetos que são possuídos por um thread.

A SyncBlock estrutura é um recipiente para informações extras que não precisam ser criada para cada objeto. Ele pode armazenar dados de interoperabilidade COM, códigos de hash e informações de bloqueio para operações de thread-safe.

ThreadPool

Exibe informações sobre o pool de segmentos gerenciado, incluindo o número de solicitações de trabalho na fila, o número de segmentos de porta de conclusão e o número de timers.

Token2EE<nome do módulo> <token>

Transforma os metadados especificados símbolo no módulo especificado em um MethodTable estrutura ou MethodDesc estrutura.

Você pode passar * para o parâmetro de nome do módulo encontrar esse token que mapeia cada módulo gerenciado carregado. Você também pode passar o nome do depurador para um módulo, tais como mscorlib ou image00400000.

Threads [-live] [-special]

Exibe todos os threads gerenciados no processo.

O Threads comando exibe a identificação de forma abreviada do depurador, a common language runtime ID do thread e o thread do sistema operacional ID. Além disso, o Threads comando exibe uma coluna de domínio que indica o domínio de aplicativo no qual um thread está em execução, uma coluna APT que exibe o modo de apartment COM e uma coluna de exceção que exibe a última exceção acionada no segmento.

  • O -live opção exibe segmentos associados a um thread ao vivo.

  • O -special opção exibe todos os segmentos especiais criados pelo CLR. Segmentos especiais incluem segmentos de coleta de lixo (em simultâneo e o servidor de coleta de lixo), segmentos de auxiliar do depurador, segmentos de finalizador, AppDomain descarregar threads e o timer de segmento pool threads.

ThreadState <Campo de valor de estado>

Exibe o estado do segmento. O value parâmetro é o valor da State campo o Threads relatório de saída.

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

TraverseHeap-xml] <filename>

Grava informações de pilha para o arquivo especificado em um formato entendido pelo profiler CLR. O -xml opção faz com que o TraverseHeap comando para formatar o arquivo como XML.

Você pode baixar o Profiler CLR da Centro de Download da Microsoft.

U-gcinfo] [-ehinfo] [-n] <MethodDesc address> | <código endereço>

Exibe uma desmontagem com anotações de um método gerenciado especificado por um MethodDesc o ponteiro de estrutura para o método ou por um endereço de código dentro do corpo do método. O U comando exibe todo o método a partir do início ao fim, com as anotações que converter tokens de metadados para nomes.

  • O -gcinfo opção faz com que o U comando para exibir o GCInfo estrutura para o método.

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

  • O -n opção desativa a exibição de nomes de arquivo de origem e de números de linha. Se o depurador tem a opção SYMOPT_LOAD_LINES especificado, o SOS procura os símbolos para cada quadro gerenciado e, se tiver êxito, exibe o correspondente arquivo nome e a linha número de origem. Você pode especificar o -n a opção para desativar esse comportamento.

VerifyHeap

Verifica o heap do coletor de lixo para sinais de corrupção e exibe quaisquer erros encontrados.

Corrupção de heap pode ser causadas por plataforma chamar chamadas são construídas incorretamente.

VerifyObj <endereço do objeto>

Verifica o objeto que é passado como um argumento para sinais de dano.

VMMap

Percorre o espaço de endereço virtual e exibe o tipo de proteção aplicada a cada região.

VMStat

Fornece uma exibição de resumo do espaço de endereço virtual, ordenado por cada tipo de proteção aplicada para que a memória (livre, reservada, privada, compromissada mapeada, imagem). A coluna TOTAL exibe o resultado da média coluna multiplicado pela coluna contagem de BLK.

Comentários

Use a extensão de depuração SOS carregando-o no depurador WinDBG. exe, que também está disponível a partir de site WDK e ferramentas de desenvolvedor, ou em Visual Studio. Você pode executar comandos em WinDgb.exe ou do imediata janela de Visual Studio.

A extensão de depuração SOS permite que você exiba informações sobre o código que está sendo executado o common language runtime. Por exemplo, você pode usar a extensão de depuração SOS para exibir informações sobre o heap gerenciado, procure a corrupção de heap, exibir os tipos de dados internos usados pelo runtime e exibir informações sobre todo o código gerenciado em execução dentro do tempo de execução.

Carregar o SOS a extensão de depuração

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

.loadby sos clr

Para carregar o SOS Debugging Extension em Visual Studio, execute o seguinte comando imediata janela durante a depuração:

.load SOS.dll

Se o comando for bem-sucedido, ele retorna a seguinte mensagem de imediata janela:

extension C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\sos.dll loaded

Você deve habilitar a depuração não gerenciada nas configurações do projeto da sua solução antes de carregar a extensão de depuração SOS. Alguns idiomas, depuração não gerenciada é desativado por padrão. Algumas plataformas não permitem a depuração de código gerenciado e ao mesmo tempo.

Observação

Para exibir o imediata janela no Visual Studio, no Debug , aponte para Windowse clique o imediata opção.Você também pode abrir o imediata janela Visual Studio pressionando CTRL + ALT + I.

WinDbg. exe e Visual Studio de usam uma versão do SOS. dll que corresponde à versão do mscorwks. dll em uso no momento. Nas versões 1.1 e 2.0 do.NET Framework, SOS. dll está instalado no mesmo diretório do mscorwks. dll. 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 mscorwks. dll que veio com a instalação está no seu caminho de símbolo e carregar a versão correspondente do SOS. dll.

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

.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 inicia o 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 o heap do coletor de lixo.

!dumpheap

O comando a seguir grava o conteúdo do log de estresse de na memória para um arquivo (padrão), chamado StressLog.txt no diretório atual.

!DumpLog

O comando a seguir exibe o 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 do processo usada pelo coletor de lixo.

!eeheap -gc

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

!finalizequeue

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

!findappdomain 00a79d98

O comando a seguir exibe todos os identificadores de coletor de lixo no processo atual.

!gcinfo 5b68dbb8 

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

!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

Referência

Prompt de comando Visual Studio

Outros recursos

Ferramentas.NET Framework