Partilhar via


Depurador de linha de comando (MDbg.exe) do .NET estrutura

O depurador de linha de comando do NET estrutura ajuda a fornecedores de ferramentas e os desenvolvedores de aplicativos encontrar e corrigem bugs nos programas do destino do .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 MDbg.exe é fornecido sistema autônomo um aplicativo de exemplo no Windows Software Development Kit (SDK). Os desenvolvedores podem examinar o código para aprender a usar os serviços de depuração. Atualmente, você pode usar MDbg.exe para depurar código gerenciado apenas; não há suporte para depuração de código não gerenciado.

MDbg [ProgramName[Program arguments]] [optional arguments ]
command [command arguments]

Comandos

Comando

Descrição

ap[rocess] [number]

Alterna para outro processo depurado ou imprime processos disponível. Os números não são PIDs reais, mas uma lista indexada 0.

a[ttach] [pid]

Anexa a um processo ou imprime processos disponível.

b[reak] [ClassName.Method | FileName:LineNo]

Define um ponto de interrupção no método especificado. Módulos são examinados em seqüência. break FileName:LineNo sets a breakpoint at a location in the source. break ~number sets a breakpoint on a symbol recently displayed with the x command. break module!ClassName.Method+IlOffset sets a breakpoint on the fully qualified location.

ca[tch] [exceptionType]

Faz com que o depurador quebrar em todas as exceções, não apenas as exceções sem tratamento.

conf[ig] [option value]

Exibe opções configuráveis tudo e como as opções são invocadas sem quaisquer valores opcionais Se a opção for especificada, define value sistema autônomo a opção corrente.

Atualmente as opções disponível são:

extpath: Define o caminho onde as extensões são pesquisadas quando o load comando é usado.

extpath+: Adiciona um caminho para os caminhos existentes onde as extensões podem ser carregadas de.

del[ete]

Exclui um ponto de interrupção.

de[tach]

Desconecta de um processo depurado.

d[own] [frames]

Move o registro de ativação ativo para baixo.

eco

Exibe uma mensagem ao console.

ex[it] [exitcode]

Sai do shell MDbg.exe, opcionalmente, especificar o código de sair do processo.

fo[reach] [OtherCommand]

Executa um comando em todos os threads. OtherCommand is a valid command that operates on one thread; foreach OtherCommand performs the same command on all threads.

f[unceval] [-ad Num] functionName [args ... ]

Executa uma avaliação de função no ativo corrente thread onde a função para avaliar é functionName. O nome da função deve ser totalmente qualificado, incluindo espaços para nome.

The -ad opção especifica o domínio do aplicativo a ser usado para resolver a função. Se o -ad opção não for especificada, o domínio do aplicativo para a resolução padrão é o domínio de aplicativo onde o segmento que é usado para a avaliação da função está localizado.

Se a função que está sendo avaliada não for estática, o primeiro parâmetro passado deve ser um this ponteiro. Todos os domínios de aplicativo são pesquisados em busca de argumentos para a avaliação de função

Para solicitar um valor de um domínio do aplicativo, prefixar a variável com o nome de domínio do módulo e do aplicativo. Por exemplo, funceval -ad 0 System.Object.ToString hello.exe#0!MyClass.g_rootRef.

Este comando avalia a função System.Object.ToString no domínio do aplicativo 0. Porque o ToString método é uma função de instância, o primeiro parâmetro deve ser um this ponteiro.

g[o]

Faz com que o programa continuar até que ele encontra um ponto de interrupção, sai do programa, ou um evento faz com que o programa parar (por exemplo, uma exceção sem tratamento).

h[elp] [command]

ou

? [comando

Exibe uma descrição de todos os comandos ou uma descrição detalhada de um comando especificado.

ig[nore] [event]

Faz com que o depurador interromper em exceções não tratadas somente.

int[ercept] FrameNumber

Reverte o depurador a um número de quadro especificado.

Se o depurador encontrar uma exceção, use esse comando para reverter o depurador para o número do quadro especificado. Você pode alterar o estado de programa usando o conjunto de comando e continuar a usar o Ircomando .

k[ill]

Interrompe o processo ativo.

l[ist] [modules|appdomains|assemblies]

Exibe os módulos carregados, domínios de aplicativo ou assemblies.

lo[ad] assemblyName

Carrega uma extensão da seguinte maneira: o assembly especificado é carregado e, em seguida, é feita uma tentativa de executar o método estático LoadExtension do Microsoft.Tools.Mdbg.Extension.Extension Digite.

mo[de] [option on/off]

Define opções diferentes de depurador. The opção parâmetro deve ser um emparelhar de duas letras.

newo[bj] typeName [arguments...]

Cria um novo objeto do tipo typeName.

n[ext]

Executa código e move para a próxima linha (mesmo que a próxima linha inclui muitas chamadas de função).

o[ut]

Move para o participante da função corrente.

pa[th] [pathName]

Pesquisa o caminho especificado para os arquivos de fonte, caso o local nos binários não está disponível.

p[rint] [var] | [-d]

Prints all variables in scope (print), prints the specified variable (print var), or prints the debugger variables (print -d).

pro[cessenum]

Exibe os processos ativo.

q[uit] [exitcode]

Fecha o shell MDbg.exe, opcionalmente, especificar o código de sair do processo.

Re[soma] [*|[~]threadNumber]

Reinicia a corrente thread ou o thread especificado pelo thread Número parâmetro.

Se o thread Número parâmetro é especificado sistema autônomo * ou se o thread número começa com ~, o comando aplica-se a todos sistema autônomo thread sistema autônomo exceto aquele especificado por thread Número.

Continuar um thread suspenso não tem efeito.

r[un] [-d(ebug) | -o(ptimize) | -enc] [[path_to_exe]args_to_exe]

Interrompe o processo corrente (se houver uma) e inicia um novo. Se nenhum argumento executável for passado, esse comando executa o programa foi executado anteriormente com o run comando. Se o argumento executável for fornecido, o programa especificado será executado usando os argumentos fornecidos opcionalmente.

Carregamento de classe, carregamento de módulo e eventos de início segmento sejam ignorados (sistema autônomo estão por padrão), o programa pára na primeira instrução de executável do thread principal.

Você pode forçar o depurador compilar just-in-time (JIT) o código usando qualquer uma de três

sinalizadores válido:

-d(ebug) é o padrão para MDbg.exe e desabilita otimizações.

-o(ptimize) é o padrão para uso fora do depurador. Ela força o código seja executado mais faz fora do depurador, mas também torna a experiência de depuração mais difícil.

-enc ativa o recurso edição and Continue, mas gera um impacto no desempenho.

conjunto variável = valor

Altera o valor de qualquer variável no escopo.

Também pode criar seu próprios depurador variáveis e atribuir valores de referência a eles de dentro de seu aplicativo. Esses valores funcionam sistema autônomo identificadores para o valor original, até mesmo o valor original está fora do escopo. Todas as variáveis do depurador devem começar com $ (por exemplo, $var). Limpe essas alças, definindo-os para nada usando o seguinte comando: set $var=

Setip [-il] number

Define o ponteiro de instrução corrente (IP) no arquivo para a posição especificada. Se o -il opção for especificada, o número representa um deslocamento Intermediate linguagem no método. Caso contrário, o número representa um número de linha de fonte.

sh[ow] [lines]

Especifica o número de linhas para mostrar

s[tep]

Execução é movido para a função seguinte na linha corrente ou se move para a próxima linha se não há nenhuma função entrar em.

su[spend] [*|[~]threadNumber]

Suspende o thread corrente ou o segmento especificado pelo threadNumber parâmetro. Se

threadNumber especificado sistema autônomo *, o comando aplica-se a todos sistema autônomo threads. Se o número de segmento começa com ~, o comando aplica-se a todos os threads, exceto o especificado pelo threadNumber. Threads suspensos são excluídos da execução quando o processo é executado por qualquer o Ir or etapacomando . Se não houver nenhum thread suspenso não no processo e você executar o Ir comando, o processo não continuará. Nesse caso, execute o CTRL-C comando Dividir o processo.

sy[mbol] commandName [commandValue]

Especifica um dos seguintes comandos:

symbol path ["value"] - Displays or sets the current symbol path.

symbol addpath "value" -Adiciona o corrente caminho de símbolo.

symbol reload ["module"]- Reloads either all symbols or the symbols for the specified module.

symbol list [module] - Shows the currently loaded symbols for either all modules or the specified module.

t[hread] [newThread][-nick name]

Atribuinome sistema autônomo o apelido para o segmento ativo no momento. O apelido pode ser usado em vez do nome do thread. Os apelidos não podem ser números. Se o thread corrente já tem um apelido atribuído, o apelido antigo será substituído pelo novo. Se o novo apelido é "", o apelido para o segmento corrente é excluído e não tem apelido novo é atribuído ao thread.

thread newThread - Sets the active thread to newThread. newThread pode ser um apelido para o thread ou um número de segmento.

thread - Exibe todos os threads gerenciado no processo corrente.

Threads geralmente são identificados por seu número de threads; no entanto, se o thread tiver um apelido atribuído, o apelido é exibido em vez disso.

u[p]

Move o registro de ativação ativo para cima.

uwgc[handle] [var] | [address]

Imprime a variável controlada por um identificador. O identificador pode ser especificado por nome ou endereço.

Quando

Exibe o ativo no momento when instruções.

when delete all |num[num[num…]] - Deletes the when statement specified by the number, or all when statements if all is specified.

when stopReason[specific_condition] do cmd[cmd[cmd…] ] - The stopReason parameter can be:

StepComplete,ProcessExited,ThreadCreated,BreakpointHit,ModuleLoaded,ClassLoaded,AssemblyLoaded,AssemblyUnloaded,ControlCTrapped,ExceptionThrown,UnhandledExceptionThrown,AsyncStop,AttachComplete, UserBreak, EvalComplete,EvalException,RemapOpportunityReached,NativeStop.

specific_condition pode ser:

número - For ThreadCreated e BreakpointHit, dispara somente quando interrompido por um thread de ponto de ID/interrupção número com o mesmo valor de ação.

[!]name - For ModuleLoaded, ClassLoaded, AssemblyLoaded, AssemblyUnloaded, ExceptionThrown, and UnhandledExceptionThrown, triggers action only when the name matches the name of the stopReason.

specific_condition deve estar vazio para outros valores de stopReason.

w[here] [-v] [-c depth] [threadID]

Exibe informações sobre quadros de pilha de depurar.

The -v opção fornece informações detalhadas sobre cada registro de ativação exibida.

Especificar um número para depth Limita quantos quadros são exibidos. Use o todos os comando para exibir todos os quadros. O padrão é 100.

Se você especificar o threadID parâmetro, você pode controlar qual thread está associado com a pilha. O padrão é a thread corrente. Use o todos oscomando para obter todos os threads.

x [-c numSymbols] [module[!pattern]]

Exibe funções correspondentes a pattern para um módulo.

If numSymbols for especificado, a saída é limitada ao número especificado. If !regex não é especificado, todas as funções são exibidas. If módulo não é fornecido, todos os módulos carregados são exibidos. Símbolos (~#) pode ser usado para conjunto pontos de interrupção usando o quebracomando .

ObservaçãoObservação:

MDbg.exe comandos diferenciam diferenciar maiúsculas de minúsculas.

Comentários

compilar o aplicativo a ser depurado usando sinalizadores de compilador específicos, o que faz 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 MDbg no aviso de comando para iniciar uma sessão de depuração, sistema autônomo mostrado no exemplo a seguir:

C:\Program Files\Microsoft Visual Studio 8\VC>mdbg
MDbg (Managed debugger) v2.0.50727.42 (RTM.050727-4200) started.
Copyright (C) Microsoft Corporation. All rights reserved.

For information about commands type "help";
to exit program type "quit".
mdbg>

The mdbg aviso indica que você está no depurador.

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

Consulte também

Referência

Ferramentas.NET Framework

Prompt de comando SDK