Partilhar via


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

O SOS depuração extensão (SOS.dll) ajuda a depurar programas gerenciado no depurador WinDbg.exe e no Visual Studio, fornecendo informações sobre o ambiente interno do common linguagem tempo de execução (CLR).

![command] [options] 

Comandos

Comando

Descrição

BPMD<nome do módulo> <nome do método>]-md<MethodDesc>]

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 tiverem sido carregados, esse comando aguarda uma notificação de que o módulo foi carregado e compilado just-in-time antes de criar um ponto de interrupção.

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

Fornece um rastreamento de pilha de apenas código gerenciado.

The -p opção que mostra os argumentos para a função gerenciada.

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

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

O SOS depuração extensão não exibe quadros de transição em plataformas com base em IA-64 e x64.

COMState

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

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

- ou -

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

Examina os elementos de um objeto de matriz.

The -start opção especifica o índice inicial na qual se deseja exibir os elementos.

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

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

The -nofields opção impede que os arrays exibindo. Essa opção está disponível somente quando o -detail opção é especificada.

DumpAssembly<Endereço do assembly>

Exibe informações sobre um assembly.

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

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

DumpClass<Endereço EEClass>

Exibe informações sobre o EEClass estrutura associada a um tipo.

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

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

DumpDomain<Endereço de domínio>]

Enumera cada Assembly objeto carregado dentro do especificado AppDomain endereço do objeto. Quando chamado sem parâmetros, o DumpDomain comando lista todos os AppDomain objetos em um processo.

DumpHeap [-stat] [-min <size>][-max <size>] [-thinlock] [-mt <MethodTable address>] [-type <partial type name>][start [end]]

Exibe informações sobre a coleta de lixo heap e coleta estatísticas sobre os objetos.

The DumpHeap comando exibirá um aviso se detectar fragmentação excessiva no coletor de lixo heap.

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

The -min opção ignora a objetos que são menores que o size parâmetro, especificado em bytes.

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

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

The -mt opção lista apenas os objetos que correspondem especificado para o MethodTable estrutura.

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

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

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

DumpIL<Endereço DynamicMethod>] [<Endereço DynamicMethodDesc>] [<Endereço MethodDesc>]

Exibe o IL (intermediate linguagem) associada a um método gerenciado.

Observe a IL dinâmico é emitida diferente IL carregado a partir de um assembly. IL dinâmico refere-se para objetos em uma matriz de objeto gerenciado em vez de símbolos de metadados.

DumpLog<Filename>]

Grava o Sumário de um log de pressão de memória para o arquivo especificado. Se você não especificar um nome, esse comando cria um arquivo chamado Stresslog.txt no diretório corrente.

O common linguagem tempo de execução fornece um log de pressão de memória que o ajuda a diagnosticar falhas de estresse. O registro permite que você diagnosticar falhas sem usar bloqueios ou E/s. Para ativar 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

DumpMD<Endereço MethodDesc>

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

Você pode usar o IP2MD comando para obter o MethodDesc estruturar o endereço de um gerenciado função.

DumpMT [-MD] <MethodTable address>

Exibe informações sobre uma tabela de método no endereço especificado. Especificando o -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] <Module address>

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

Você pode usar o DumpDomain ou DumpAssembly comandos para recuperar o endereço do módulo.

DumpObj<endereço de objeto>

- ou -

DO<endereço de objeto>

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

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

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

DumpRuntimeTypes

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

DumpStack [-EE] [top stack [bottom stack]]

Exibe um rastreamento de pilha.

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

Em x86 plataformas, a DumpStack comando cria um rastreamento de pilha verbose.

Nas plataformas com base em IA-64, a e x64DumpStack comando imita o depurador K comando. The top e bottom parâmetros são ignorados nas plataformas com base em IA-64 e x64.

DumpSig <sigaddr> <moduleaddr>

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

DumpStackObjects [-verify] [top stack [bottom stack]]

- ou -

DSO [-verify] [top stack [bottom stack]]

Exibe todos os objetos gerenciado encontrados dentro dos limites da pilha corrente.

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

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

DumpVC<Endereço MethodTable> <Endereço>

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

The MethodTable parâmetro permite que o DumpVC comando para interpretar corretamente a campos. Valor de classes não têm uma tabela do método sistema autônomo o primeiro campo.

EEHeap [-gc] [-loader]

Exibe informações sobre o processo de memória consumida por interno Common Language tempo de execução estruturas de dados.

The -gc e -loader Opções de limitam a saída deste comando coletor de lixo ou carregador de estruturas de dados.

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

EEStack [-short] [-EE]

Executa o DumpStack comando todos os segmentos no processo.

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

  1. Segmentos que foram executadas um bloquear.

  2. Segmentos que tenham sido interrompidos para permitir que um lixo coleção.

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

EEVersion

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

EHInfo<Endereço MethodDesc>] [<Código de 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 desloca para o bloco de cláusula (o bloco try) e o manipulador de bloco (o bloco catch).

FinalizeQueue [-detail]

Exibe todos os objetos registrados para finalização.

The -detail opção exibe informações adicionais sobre qualquer SyncBlocks Limpe e mais informações sobre qualquer que aguardar RuntimeCallableWrappers (RCWs) que aguardar a limpeza. Ambas as estruturas de dados são armazenados em cache e limpos pelo thread finalizador.

FindAppDomain<Endereço de objeto>

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

GCHandles [-perdomain]

Exibe estatísticas sobre identificadores de coletor de lixo no processo.

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

Use o GCHandles comando localizar vazamentos de memória causados pelo coletor de lixo vazamentos de identificador. Por exemplo, um perda de memória ocorre quando código mantém um grande array porque um identificador de coletor de lixo forte ainda aponta para ele e o identificador é descartado sem liberando-lo.

GCHandleLeaks

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

GCInfo<Endereço MethodDesc><Código de endereço>

Exibe dados que indica quando registra ou pilha locais contêm objetos gerenciado. Se ocorrer uma coleta de lixo, o coletor de deve saber os locais das referências a objetos de modo que possa atualizá-los com os novos valores de ponteiro de objeto.

GCRoot [-nostacks] <Object address>

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

The GCRoot comando examina a heap gerenciada toda e a tabela de identificadores de alças dentro de outros objetos e as alças na pilha. Em seguida, cada pilha é procurada por ponteiros para objetos e a fila de finalizador 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 local ou argumento pertence a fim de determinar se a raiz de pilha ainda está em uso.

The -nostacks opção restringe a Pesquisar a objetos freachable e alças de coletor de lixo.

help<comando>] [<Perguntas freqüentes>]

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

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

IP2MD<Código de endereço>

Exibe o MethodDesc estrutura no endereço especificado no código que tenha sido just-in-time (JIT) compilado.

MinidumpMode [0] [1]

Impede que executando comandos não seguros ao usar um minidespejo.

Passar 0 Para desabilitar esse recurso ou 1 Para ativar esse recurso. Por padrão, a MinidumpMode valor é definido como 0.

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

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 Desassemblador do MSIL (ILDASM.exe). Você também pode passar * sistema autônomo o módulo de parâmetro de nome para pesquisar em todas sistema autônomo carregar módulos gerenciado. The nome do módulo parâmetro também pode ser o nome do depurador para um módulo, sistema autônomo 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 de objeto>]

Exibe o dimensionar do objeto especificado. Sem parâmetros, o ObjSize comando exibe o dimensionar de todos os objetos encontrados em threads gerenciado, exibe todos os coletor de lixo manipula no processo e calcule o dimensionar de todos os objetos apontada por essas alças. The ObjSize comando inclui o dimensionar de todos os objetos filho juntamente com o pai.

PrintException [-nested] [<Exception object address>]

- ou -

PE [-nested] [<Exception object address>]

Exibe e formata os 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 lançada no thread corrente.

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

Você pode usar esse 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, time de CPU do núcleo e estatísticas de uso de memória.

RCWCleanupList<Endereço RCWCleanupList>

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

SaveModule<endereço básico> <Nome do arquivo>

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

StopOnException [-derived] [-create | -create2] <Exceção> <Pseudo-registro número>

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

The -derived opção captura a exceção especificada e todas as exceções que deriva da exceção especificada.

SyncBlk [-all | <syncblk number>]

Exibe o especificadoSyncBlock estrutura ou todos os SyncBlock estruturas. Se você não passar argumentos, o SyncBlk comando exibe a SyncBlock estrutura correspondente a objetos que pertencem a um thread.

A SyncBlock estrutura é um contêiner para informações adicionais que não precisam ser criado 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 thread gerenciado inclusive 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 token no módulo especificado em um MethodTable estrutura de ou MethodDesc estrutura.

Você pode passar * para o parâmetro de nome de módulo encontrar o que esse token mapeia em todos os módulos carregados gerenciado. Você também pode passar o nome do depurador para um módulo, sistema autônomo mscorlib ou image00400000.

Threads [-live] [-special]

Exibe todos os threads gerenciado no processo.

The Threads comando exibe a ID de abreviada do depurador, o identificador do segmento de tempo de execução linguagem comum e o identificador do segmento de sistema operacional. Além disso, a Threads comando exibe uma coluna de domínio que indica o domínio do aplicativo no qual um thread está em execução, uma coluna APT exibe o modo de apartment com. e uma coluna de exceção que exibe a última exceção lançada no thread.

The -live opção exibe segmentos associados a um thread em tempo real.

The -special opção exibe todos os threads especiais criados pelo CLR. Threads especiais incluem lixo (GC) da coleção segmentos (no GC simultânea e servidor GC), segmentos de auxiliar do depurador, finalizador threads, AppDomain Descarregue os threads e segmentos de timer do pool de threads.

TraverseHeap [-xml] <filename>

Grava heap informações para o arquivo especificado em um formato entendido pelo CLR criador de perfil. The -xml opção faz com que o TraverseHeap comando para formatar o arquivo sistema autônomo XML.

Você pode baixar o CLR criador de perfil do centralizar de download da Microsoft.

U [-gcinfo] [-ehinfo] <MethodDesc address> | <Code address>

Exibe uma desmontagem com anotações 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 de método. The U comando exibe todo o método do início ao fim, com anotações converter símbolos de metadados em nomes.

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

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

VerifyHeap

Verifica o coletor de lixo heap sinais de danos e exibe quaisquer erros encontrados.

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

VMMap

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

VMStat

Fornece um modo de exibição de resumo do espaço de endereço virtual, ordenado por cada tipo de proteção aplicada a essa memória (disponível, reservada, compromisso, privada, mapeada, imagem). A coluna TOTAL exibe o resultado da média coluna multiplicado pela coluna BLK CONT.Núm.

Comentários

Use a extensão de depuração SOS carregando o depurador WinDbg.exe, que está disponível a partir de Depuração de ferramentas para o site do Windows, ou ao Visual Studio 2005 ou anterior. Você pode executar comandos dentro WinDgb.exe ou na janela Immediate do Visual Studio.

O SOS depuração extensão permite que você exiba informações sobre código sendo executado no common linguagem tempo de execução. Por exemplo, você pode usar o SOS depuração extensão para exibir informações sobre a heap gerenciada, procure por danos de heap, exibir tipos de dados interno 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.

Carregar o SOS depuração extensão

Para carregar o SOS Debugging extensão no depurador WinDbg.exe, execute o seguinte comando na ferramenta; para carregar o SOS Debugging extensão no Visual Studio, execute o seguinte comando na janela Imediata durante a depuração:

.loadby sos mscorwks

Você deve habilitar a depuração não gerenciada nas configurações de projeto da solução antes de carregar o SOS Debugging extensão. Para alguns idiomas, a depuração não gerenciada é desabilitado por padrão.

Observação: Para exibir a janela Immediate do Visual Studio 2005, clicar no Depurar menu, clicar no Windows menu e, em seguida, clicar no Imediata opção. Você pode também em em aberto a janela imediata no Visual Studio, selecione CTRL-ALT-I.

WinDbg.exe e o Visual Studio usam uma versão do SOS.dll que corresponde à versão do mscorwks.dll atualmente em uso. Em versões 1.1 e 2.0 do .NET estrutura, SOS.dll está instalado na mesma diretório sistema autônomo mscorwks.dll. Por padrão, você deve usar a versão do SOS.dll corresponde à versão corrente do mscorwks.dll.

Para usar um arquivo de despejo criado em outro computador, certifique-se de que o arquivo mscorwks.dll que veio com que a instalação está em seu caminho de símbolo e carregue a versão correspondente do SOS.dll.

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

.load <full path to sos.dll>

Exemplos

O comando a seguir exibe o Sumário de uma matriz com o endereço 00ad28d0. A exibição inicia a partir do segundo elemento e continua para cinco elementos.

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

O comando a seguir exibe o Sumário de um assembly com o endereço 1ca248.

!dumpassembly 1ca248

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

!dumpheap

O comando a seguir grava o Sumário do log de pressão de memória para um arquivo chamado Stresslog.txt na pasta corrente.

!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 com o endereço 1caa50.

!dumpmodule 1caa50

O comando a seguir exibe informações sobre um objeto com o endereço a79d40.

!DumpObj a79d40

O comando a seguir exibe os campos de uma classe de valor com o endereço 00a79d9c usando a tabela de método nos endereços de 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 planejados para finalização.

!finalizequeue

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

!findappdomain 00a79d98

O comando a seguir exibe todos os identificadores de coletor de lixo do processo corrente.

!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 com o endereço 02000003 no módulo unittest.exe.

!token2ee unittest.exe 02000003

Consulte também

Referência

Ferramentas.NET Framework

Prompt de comando SDK