Compartilhar via


Depurador do tempo de execução (Cordbg.exe)

O depurador de tempo de execução ajuda a fornecedores de ferramentas e aplicativo desenvolvedores encontre e corrija bugs nos programas que visam o .NET estrutura common linguagem tempo de execução. Essa ferramenta usa o tempo de execução do API de depurar para fornecer serviços de depurar. O código-fonte Cordbg.exe é fornecido sistema autônomo um aplicativo de exemplo. Os desenvolvedores podem examinar o código para aprender a usar os serviços de depuração. Atualmente, só é possível usar Cordbg.exe para depurar código gerenciado; não há suporte para depuração de código não gerenciado.

Use a primeira linha de sintaxe abaixo Para iniciar uma sessão Cordbg.exe. Usar a segunda linha na (cordbg) aviso dentro de uma sessão Cordbg.exe.

cordbg [ProgramName[Program arguments]][optional arguments ]
command [command arguments]

Parâmetros

Comando

Descrição

ap[pdomainenum] [option]

Enumera todos os domínios de aplicativo, assemblies e módulos do processo corrente. Se você não especificar o opção argumento, o comando lista todos os domínios de aplicativo, assemblies e módulos do processo corrente. Depois de desanexação ou anexar, você deve especificar o Ir comando continuar a execução.

The opção argumento pode ser uma das seguintes opções:

Anexar

Lista os domínios de aplicativo no processo e solicita que o usuário selecionar o domínio para anexar.

Desanexar

Lista os domínios de aplicativo no processo e solicita que o usuário selecionar o domínio para desconectar-se de.

0

Lista os domínios de aplicativo no processo.

1

Lista os domínios de aplicativos e assemblies no processo.

as[sociatesource] {s|b de id de ponto de interrupção de } nome de arquivo

Associa o nome de arquivo fornecido com o ponteiro do registro de ativação corrente (opção s) ou o ponto de interrupção especificado (opção b).

a[ttach] pid

Anexa o depurador a um processo em execução. Cordbg.exe interrompe o programa que ele atualmente está depurando (se houver uma) e tenta anexar ao processo especificado pelo PID argumento. A identificação de processo número PID pode estar no formato decimal ou hexadecimal.

b[reak] [[file:] número da linha |

[[ classe:: function [:offset]]

Define ou exibe pontos de interrupção. Se você não especificar quaisquer argumentos, a ferramenta exibe uma lista de pontos de interrupção corrente; caso contrário, define um ponto de interrupção no local especificado. Você pode conjunto um ponto de interrupção em uma linha no arquivo de fonte corrente, um número de linha em um arquivo de fonte totalmente qualificado ou em um método qualificados por uma classe e deslocamento opcional.

Pontos de interrupção persistem pelas é executado em uma sessão. Você pode usar o parar da mesma forma que você usa do comandoquebra.

Cordbg.exe exibe pontos de interrupção sistema autônomo "desvinculado" se o local do ponto de interrupção especificado não pode ser limite ao código. Quando um ponto de interrupção é desvinculado, isso significa que o código subjacente para o local do ponto de interrupção não foi carregado ainda. Isso pode acontecer por vários motivos válido, sistema autônomo um arquivo com ortografia incorreta ou nome de classe (eles diferenciam diferenciar maiúsculas de minúsculas). Além disso, os pontos de interrupção será não acoplados se você defini-las antes de executar um aplicativo. Pontos de interrupção se tornar vinculados quando o código real é carregado. O depurador tenta revincular automaticamente cada ponto de interrupção não acoplado ao carregar um módulo.

ca[tch] [event]

Exibe uma lista de tipos de eventos ou faz com que o tipo de evento especificado interromper o depurador. Se você não especificar um argumento, a ferramenta exibe uma lista de tipos de eventos em que tipos de evento que interromper o depurador são marcados "on" e tipos de eventos que são ignorados são marcados "desligado". Se você especificar um argumento, o depurador pára quando ocorrem eventos do tipo especificado. Por padrão, o depurador pára somente em eventos de exceção sem tratamento (isto é, segunda chance de exceções). Tipos de evento que interromper o depurador persistem entre execuções em uma sessão. Para fazer com que o depurador ignore um determinado tipo de evento, use o Ignorarcomando .

O argumento do evento pode ser uma das seguintes opções:

e[ xceptions] [exception type]

A ferramenta adiciona o tipo de exceção a uma lista de exceções de primeira chance para capturar. Se você não especificar um tipo de exceção, a ferramenta captura todas as exceções de primeira instância. O tipo de exceção é o caso de minúsculas, por exemplo, sistema.ArgumentException.

u[ nhandled]

Exceções sem tratamento

c[ lass]

Eventos de carregamento de classe

m[ odule]

Eventos de carregamento do módulo

t[ hread]

Eventos de início do thread

conn[ect] machine_name port

Para projetos de dispositivo SMART.

Conecta-se a um dispositivo remoto executando um aplicativo .NET Compact estrutura.

Parâmetro Definição
nome_da_máquina Obrigatório.O nome ou endereço IP do computador remoto.
Porta Obrigatório.A porta usar para se conectar ao computador remoto.

cont [count]

Continua o programa. Se você não especificar um argumento, uma vez o programa continuará. Se você especificar um argumento, o programa continuará o número de vezes especificado. Esse comando é útil para dar continuidade a um programa quando um evento de carregamento de classe, uma exceção ou o depurador interrompe o ponto de interrupção. Você pode usar o Ir da mesma forma que você usa do comandoCONT..

del[ete] [breakpoint id, ...]

Exclui os pontos de interrupção. Se você não especificar quaisquer argumentos, a ferramenta exclui todos os pontos de interrupção corrente. Se você especificar um ou mais id do ponto de interrupção argumentos, a ferramenta exclui pontos de interrupção especificados. Você pode obter identificadores de ponto de interrupção usando o quebra or parar comandos. Você pode usar o Remover da mesma forma que você usa do comandoExcluir.

de[tach]

Desconecta o depurador do processo corrente. O processo continua e é executado sistema autônomo se um depurador não esteja anexado a ela automaticamente.

dis[assemble] [0xaddress][{+|-} delta] [line count]

Exibe instruções desmontadas nativas para o ponteiro de instrução corrente ou endereço, se especificado. O número de instruções exibidas padrão é cinco. If you specify a line count argument, the tool displays the specified number of extra instructions before and after the current instruction pointer or address. The last line count used becomes the default for the current session. Se você especificar um delta, o número especificado será adicionado ao ponteiro de instrução corrente ou especificado endereço para começar a desmontagem.

d[own] [count]

Move o registro de ativação ponteiro para a pilha em direção a quadros chamado pelo quadro corrente para fins de inspeção. Se você não especificar um argumento, o registro de ativação ponteiro move para baixo de um quadro. Se você especificar um argumento, o ponteiro da pilha do quadro move para baixo o número especificado de quadros. Se houver informações do nível de origem, a ferramenta exibe a linha de código-fonte do quadro. Esse comando é freqüentemente usado em conjunto com o backupcomando .

du[mp] address [count]

Despeja um bloco de memória com a saída em formato hexadecimal ou decimal, dependendo do modo do depurador (consulte modo). The endereço argumento é o endereço de bloco de memória. The Contagem argumento é o número de bytes para despejar.

ex[it]

Interrompe o processo corrente e sai do depurador. Você pode usar o Sair comando de da mesma forma que você usar Sair.

f[unceval] [class::] function [ arg0 arg1 ...argn]

Avalia a função especificada no thread corrente. A ferramenta armazena o novo objeto na variável $ resultado e poderá usá-lo para avaliações subseqüentes. Argumentos válido são limitados a outras variáveis, inteiros de 4 byte e as constantes Nulo, True, and False.

ObservaçãoObservação:
Para uma função de membro, o primeiro argumento deve ser um objeto da classe ou ao qual pertence a função de membro de classe derivada.

g[o] [count]

See CONT..

h[elp] [command ...]

Exibe descrições para os comandos especificados. Se você não especificar quaisquer argumentos, Cordbg.exe exibe uma lista de comandos do depurador. Você pode usar o ? da mesma forma que você usa de comandoAjuda.

ig[nore] [event]

Exibe uma lista de tipos de eventos ou faz com que o tipo de evento especificado ser ignorada pelo depurador. Se você não especificar um evento argumento, a ferramenta exibe uma lista de tipos de eventos, onde os tipos de evento são ignorados são marcados "off" e tipos de evento que interromper o depurador marcados "on". Se você especificar um argumento, a ferramenta ignorará os eventos do tipo especificado. Para conjunto um tipo de evento para interromper o depurador, use o catchcomando .

The evento argumento pode ser um dos seguintes tipos de evento:

e[ xceptions] [exception type]

A ferramenta adiciona o tipo de exceção a uma lista de exceções de primeira chance para ignorar. Se você não especificar um tipo de exceção, a ferramenta irá ignorar todas as exceções de primeira instância. O tipo de exceção é o caso de minúsculas, por exemplo, sistema.ArgumentException.

u[ nhandled]

Exceções sem tratamento

c[ lass]

Eventos de carregamento de classe

m[ odule]

Eventos de carregamento do módulo

t[ hread]

Eventos de início do thread

i[n] [count]

See etapa.

k[ill]

Interrompe o processo corrente. O depurador permanece ativo para processar ainda mais comandos.

l[ist] option

Exibe uma lista de módulos carregados, classes ou funções global.

The opção argumento pode ser uma das seguintes opções:

mod

Lista os módulos carregados no processo.

CL

Lista as classes carregadas no processo.

Fu

Lista funções global para cada módulo no processo.

m[ode] [[mode name {0|1} ]

Define e exibe os modos de depurador para vários recursos do depurador. Para conjunto um valor, especifique o nome do modo and a 1 para "on" ou 0 para "desativado". Se você não especificar um argumento, a ferramenta exibe uma lista de configurações do modo corrente. Os modos são persistentes no registro entre fica Cordbg.exe Windows. Para obter mais informações, consulte a tabela do depurador argumentos do modo.

newo[bj] class

Cria um novo objeto usando o thread corrente. A ferramenta armazena o novo objeto na variável $ resultado e poderá usá-lo para avaliações subseqüentes.

newobjnc class

Cria um novo objeto usando o thread corrente sem executar um construtor no objeto. O novo objeto é inicializado para zero. A ferramenta armazena o novo objeto na variável $ resultado e poderá usá-lo para avaliações subseqüentes.

news[tr] string

Cria uma nova seqüência de caracteres usando o thread corrente. A ferramenta armazena o novo objeto na variável $ resultado e poderá usá-lo para avaliações subseqüentes.

n[ext] [count]

As etapas que o programa para a próxima linha de fonte, revisão sobre função chama. Se você não especificar um argumento, a ferramenta as etapas de uma linha de código-fonte. Se você especificar um argumento, a ferramenta conduz o número de linhas especificado. Você pode usar o Portanto, da mesma forma que você usa do comandopróximo.

ns[ingle] [count]

As etapas do programa um ou mais instruções, ignorando sobre chamadas de função. Se você não especificar um argumento, a ferramenta conduz uma instrução. Se você especificar um Contagem argumento, a ferramenta conduz o número especificado de instruções.

o[ut] [count]

As etapas o programa fora da função corrente. Se você não especificar um argumento, a ferramenta executa uma etapa para fora de uma vez para a função corrente. Se você especificar um argumento, a ferramenta executa uma etapa sem número de vezes especificado.

pa[th] [new path]

Exibe ou define o caminho usado para Pesquisar para arquivos de fonte e símbolos de depuração. Se você não especificar um argumento, a ferramenta exibe o caminho corrente. If you specify a new path argument, it becomes the new path used to search for source files and debugging symbols. Esse caminho persiste entre as sessões no registro do Windows.

p[rint] [variable name]

Exibe um ou mais variáveis locais junto com seus valores. Se você não especificar um argumento, a ferramenta exibe todas as variáveis locais e seus valores. Se você especificar um argumento, a ferramenta exibe o valor de apenas a variável local especificado. Para obter detalhes, consulte Usando o comando de impressão na seção exemplos.

pro[cessenum]

Enumera todas gerenciado processos e os domínios de aplicativo em cada processo.

q[uit]

See Sair.

ref[reshsource] [source file]

Recarrega o código-fonte para um arquivo de origem específica. O arquivo de fonte ser recarregado deve fazer parte do programa atualmente em execução. Depois de definir um caminho de arquivo de origem com o caminho de comando, você pode usar o refreshsource comando para colocar na ausência de código-fonte.

regd[efault] [force]

Define o depurador just-in-time (JIT) do padrão Cordbg.exe. O comando não terá efeito se outro depurador já está registrado. Use o forçar argumento para substituir o depurador JIT registrado.

reg[isters]

Exibe o Sumário dos registradores para a corrente thread.

rem[ove] [breakpoint id, ...]

See Excluir.

re[sume] [~] [tid]

Reinicia o thread especificado pelo TID argumento quando o depurador continua. Se você usar o ~ sintaxe, a ferramenta reinicia todos os threads, exceto o segmento especificado. Se você não especificar um argumento, o comando não terá efeito.

r[un] [executable [args]]

Elimina o processo corrente (se houver uma) e inicia um novo. Se você não especificar um executável argumento, esse comando executa o programa foi executado anteriormente com o executarcomando . Se você especificar um executável argumento, a ferramenta executa o programa especificado usando o fornecida opcionalmente args. Se Cordbg.exe está ignorando a carga de classe, carregamento de módulo e eventos de início do thread (sistema autônomo ele é por padrão), o programa pára na primeira instrução de executável do thread principal.

set variable value

Define o valor do especificado variável à especificada valor. O valor pode ser um literal ou outra variável. Para obter detalhes, consulte Usar o comando conjunto. na seção exemplos.

setip line number

Define a próxima demonstrativo para executar o especificadonúmero da linha.

sh[ow] [count]

Exibe linhas de código fonte. Se você não especificar um argumento, a ferramenta exibe as linhas de código cinco fonte antes e após a linha de código fonte corrente. Se você especificar um argumento, a ferramenta exibe o número especificado de linhas antes e após a linha corrente. O último Contagem especificado se tornará o padrão para a sessão corrente.

si <Contagem>]

See etapa.

Portanto, <Contagem>]

See próximo.

ss[ingle] [count]

As etapas do programa um ou mais instruções, depuração em chamadas de função. Se você não especificar um argumento, a ferramenta as etapas em apenas uma instrução. Se você especificar um argumento, a ferramenta executa o número de etapas especificado.

s[tep] [count]

As etapas que o programa para a próxima linha de fonte, depuração em função chama. Se você não especificar um argumento, o programa as etapas para a próxima linha. Se você especificar um argumento, o programa etapas o número de linhas especificado. Você pode usar o si o ou comandoem da mesma forma que você usa do comandoetapa.

parar [arquivo: número da linha |

[[classe:: function[:offset]] |

[= 0 x de endereço]

See quebra.

su[spend] [~] [tid]

Suspende o thread especificado pelo TID argumento quando o depurador continua. Se você usar o ~ sintaxe, a ferramenta suspende todos os thread s, exceto o especificado thread. Se você não especificar um argumento, o comando não terá efeito.

t[hreads] [tid]

Exibe uma lista de threads ou define o thread corrente. Se você não especificar um argumento, a ferramenta exibe a lista de todos os threads que são ainda ativa e que executou o código gerenciado. Se você especificar um argumento, a ferramenta define o thread corrente para o segmento especificado.

up [count]

Move o ponteiro do registro de ativação na pilha para quadros que chamou o quadro corrente para fins de inspeção. Se você não especificar um argumento, o registro de ativação ponteiro se move até um quadro. Se você especificar um argumento, o ponteiro da pilha do quadro move para cima o número de quadros de pilhas especificado. Se houver informações do nível de origem, a ferramenta exibe a linha de código-fonte do quadro.

w[here] [count]

Exibe um rastreamento de pilha para o segmento corrente. Se você não especificar um argumento, a ferramenta exibe um rastreamento de pilha completa. Se você especificar um argumento, a ferramenta exibe o número de quadros de pilhas especificado.

wr[itememory] address count byte, ...

Grava os bytes especificados para o processo de destino. The endereço argumento especifica o local no qual os bytes de gravar. The Contagem argumento especifica o número de bytes a gravar. The byte argumentos especificam o que o processo de gravar. Se o número de bytes da lista for menor do que o Contagem argumento, a ferramenta quebra automaticamente a lista de byte e o copia novamente. Se o número de bytes na lista é a mais de oContagem argumento, a ferramenta ignora bytes extras.

wt

sistema autônomo etapas do aplicativo por nativo instruções, iniciando a partir da instrução corrente e imprimir a árvore de chamadas sistema autônomo ele vai. A ferramenta imprime o número de instruções nativas executadas em cada função com o rastreamento de telefonar. Rastreamento pára quando a ferramenta de atinge a instrução de retorno da função na qual o comando foi executado originalmente. No participante do rastreamento, a ferramenta imprime o número total de instruções executadas. Este comando imita o NT Symbolic Debugger wtcomando e você pode usá-lo para análise de desempenho básico. Atualmente, a ferramenta conta apenas código gerenciado.

x modulename ! string_to_look_for

Exibe os símbolos no módulo especificado que correspondem ao padrão especificado pelo string_to_look_for argumento. Você pode usar o caractere asterisco no string_to_look_for argumento para indicar à ferramenta para coincidir com qualquer coisa. A ferramenta ignora quaisquer caracteres após o * caractere.

? [command ...]

See Ajuda.

>nome do arquivo de

Grava executados todos os comandos para o especificado nome de arquivo. Se você não especificar nome de arquivo, o comando pára gravar no arquivo de comandos.

<nome do arquivo de

Lê e executa os comandos a especificadonome de arquivo.

ObservaçãoObservação:

Cordbg.exe comandos diferenciam diferenciar maiúsculas de minúsculas. Além disso, vários comandos têm sinônimos, que significa que você pode usar qualquer um dos vários comandos para produzir o mesmo resultado. Por exemplo, você pode usar um o quebra or the parar comando conjunto pontos de interrupção.

Argumentos do modo

Você pode especificar argumentos do modo usando o menor número de caracteres necessário para fazer com que o modo exclusivo. Por exemplo, "modo de 1 m" equivale a "modo moduleloads 1".

Argumento

Descrição

AppDomainLoads

Exibe o domínio do aplicativo e o assembly carregam eventos.

ClassLoads

Exibe eventos de carregamento de classe.

DumpMemoryInBytes

Exibe o Sumário da memória sistema autônomo bytes ou DWORDS.

EmbededCLR

Define o depurador para aplicativos .NET Compact estrutura de destino em execução em dispositivos inteligentes. Para controlar essa configuração, especifique 1 para sobre ou 0 para desativar.

EnhanceDiag

Exibe avançado informações de diagnóstico.

HexDisplay

Exibe números em formato hexadecimal ou decimal.

ILNatPrint

Exibe os deslocamentos na Microsoft intermediate linguagem (MSIL) ou o linguagem nativo relativos ou ambos.

ISAll

Percorre todos os interceptadores.

ISClinit

Percorre os inicializadores de classe.

ISExceptF

Etapas a filtros de exceção.

ISInt

Percorre interceptadores de usuário.

ISPolicy

Etapas por meio de diretivas de contexto.

ISSec

Percorre interceptadores de segurança.

JitOptimizations

Especifica se a compilação JIT gera código que é mais fácil de depurar.

LoggingMessages

Exibe gerenciado mensagens do log de código.

ModuleLoads

Exibe eventos de carregamento do módulo.

SeparateConsole

Especifica se o processo que está sendo depurado obtém seu próprio console.

ShowArgs

Exibe o rastreamento de pilha argumentos do método.

ShowModules

Exibe os nomes de módulos o rastreamento da pilha.

ShowStaticsOnPrint

Exibe campos estático para objetos.

ShowSuperClassOnPrint

Exibe o Sumário da classe base para os objetos.

USAll

Percorre todos os locais de parada não mapeados.

USEpi

Etapas através do método epilogs.

USPro

Etapas através do método prologs.

USUnmanaged

Etapas a código não gerenciado.

Comentários

Você deve compilar o aplicativo para depurar usando sinalizadores de compilador específicos, fazer com que o compilador gerar símbolos de depuração. Consulte a documentação do seu compilador para obter mais informações sobre esses sinalizadores. Você ainda pode depurar aplicativos otimizados, mas algumas informações de depuração será ausentes. Por exemplo, muitas variáveis locais não será visíveis e linhas de fonte não serão exatos.

Após compilar o aplicativo, digite Cordbg no aviso de comando para iniciar uma sessão de depuração, sistema autônomo mostrado no exemplo a seguir.

D:\Program Files\FrameworkSDK\Bin>cordbg
Microsoft (R) Common Language Runtime Test Debugger Shell. Version 2000.14.2100.0, Copyright (c) Microsoft Corp. 1998-2000
(cordbg)

The (cordbg) aviso indica que você está no depurador.

Quando estiver no depurador, use os comandos e os argumentos apropriados para chamar a funcionalidade necessária.

Quando você inicia uma sessão de depurar a partir da linha de comando, você também pode fornecer o nome do aplicativo que você deseja que a depurar, argumentos do programa e argumentos opcionais. Os argumentos opcionais Cordbg.exe são os mesmos comandos que você deseja usar no Cordbg.exe mas você deve prefixá-los com o caractere de ponto de exclamação (!). Você pode usar o! caractere sistema autônomo um literal em uma seqüência de caracteres pela colocação de um prefixo-lo com o caractere barra invertida (\\\). Isso é necessário ao usar o xcomando .

Se um argumento numérico em um comando começa com o prefixo 0 x, Cordbg.exe pressupõe que o argumento está no formato hexadecimal. Caso contrário, ele assume que o argumento é em formato decimal.

A maioria dos comandos no Cordbg.exe podem ser prefixados com um asterisco, que faz com que o comando ser executado uma vez para cada thread gerenciado no processo. O comando é executado no contexto de cada segmento. The most useful command to prefix with an asterisk is the w[here] command. Por exemplo, * w fará com que o rastreamento da pilha de cada thread gerenciado a ser impresso.

Para obter mais informações sobre os serviços de depuração do tempo de execução, consulte a especificação ativando profiling e depuração. Além disso, os desenvolvedores de ferramentas devem ver de depurar visão geral e especificações de referência depurar localizadas na pasta Ferramentas Developers guia que acompanha o Windows Software Development Kit (SDK).

Exemplos

Iniciar uma sessão Cordbg.exe

O comando a seguir inicia uma sessão Cordbg.exe para o aplicativo MyApplication.exe os argumentos do programa a e 2 e os seguintes comandos opcionais: Defina um ponto de interrupção no MyApplication.cs na linha 42; continuar o aplicativo; exibir símbolos em MyApplication.exe a seqüência de caracteres de correspondência 'SomeString'.

cordbg MyApplication.exe a 2 !b MyApplication.cs:42 !g !x MyApplication.exe\!SomeString

Executando um executável dentro de uma sessão Cordbg.exe

O comando a seguir inserido a partir de uma sessão Cordbg.exe (com o (cordbg) aviso) executa o executável MyApplication.exe os argumentos do programa a e 2.

run MyApplication.exe a 2

Usando o comando de impressão

Os comandos a seguir demonstram que você pode usar a notação de ponto com o Imprimir comando para especificar variáveis dentro de objetos.

print obj.var1
print obj1.obj2.var1

Se uma classe estender outra classe, a Imprimir comando mostra os campos da classe especificada e campos da classe base. Por exemplo, se de classem1 possui campos a, b, e c e classe m2 amplia m1 e contém campos d, e, e f, em seguida, uma instância myInstance de m2 Imprime da seguinte maneira.

myInstance = <addr> <m2>
      a = 1
      b = 2
      c = 3
      m2::d = 4
      m2::e = 5
      m2::f = 6

Você pode especificar variáveis estáticas da classe, colocação de um prefixo o nome de variável com o nome de classe, sistema autônomo a seguir.

print MyClass::StaticVar1
print System::Boolean::True

Índices da matriz devem ser expressões simples. Os seguintes índices de matriz são válido para uso com o Imprimircomando .

print arr[1]
print arr[i]
print arr1[arr2[1]]
print md[1][5][myObject.a]

Os seguintes índices de matriz inválido são válido para uso com o Imprimir comando porque o índice de matriz inválido é uma expressão simples.

print arr[i + 1]
print arr[i + 2]

Usar o comando conjunto

Ao usar o conjunto de comando, o valor que está sendo atribuído à variável especificada pode ser um literal ou outra variável. A seguir é usos válido do conjuntocomando .

set int1 0x2a
set float1 3.1415
set char1 'a'
set bool1 true
set obj1 0x12345678
set obj1 obj2
set obj1.m_length[obj1.m_height] obj3.m_length[2]

Consulte também

Referência

Ferramentas.NET Framework

Prompt de comando SDK