MDbg.exe (.NET Framework depurador de linha de comando)
O depurador de linha de comando do NET Framework ajuda os fornecedores de ferramentas e os desenvolvedores de aplicativos, localizar e corrigem erros nos programas destinados a.NET Framework common language runtime. Essa ferramenta usa a API de depuração do runtime para fornecer serviços de depuração. Você pode usar MDbg.exe para depurar somente código gerenciado; Não há nenhum suporte para depuração de código não gerenciado.
A.Depurador de linha de comando do NET Framework é instalado automaticamente com os dois Visual Studio e o O SDK do Windows. Para iniciar a ferramenta, abra o Prompt de comando Visual Studio ou o Shell CMD do SDK do Windows. (Para abrir o Shell CMD, clique em Iniciar, clique em Todos os programas, clique em versão 7.0 do Microsoft Windows SDKe em seguida, clique em Shell cmd.) No prompt de comando, digite o seguinte:
MDbg [ProgramName[arguments]] [options]
Comandos
Quando você está no depurador (conforme indicado pelo mdbg> prompt), digite um dos comandos descritos na próxima seção:
commandargumentos
MDbg.exe comandos diferenciam maiúsculas de minúsculas.
Comando |
Descrição |
---|---|
aprocess]number |
Alterna para outro processo depurado ou imprime processos disponíveis. Os números não são o processo real IDs (PIDs), mas uma lista indexada de 0. |
attach]pid |
Anexa a um processo ou imprime processos disponíveis. |
brromper]ClassName.Method | FileName:LineNo] |
Define um ponto de interrupção no método especificado. Módulos são examinados seqüencialmente.
|
blocoingObjects |
Exibe monitora os bloqueios, que estão bloqueando segmentos. |
catch]exceptionType |
Faz com que o depurador quebrar em todas as exceções e não apenas as exceções sem tratamento. |
CLearException |
Marca a exceção atual como manipulado para que possa continuar a execução. Se a causa da exceção não tenha lidada com, a exceção pode ser relançada rapidamente. |
config]option value |
Exibe todas as opções configuráveis e mostra como as opções são invocadas sem quaisquer valores opcionais. Se a opção for especificada, define value como a opção atual. As seguintes opções estão disponíveis atualmente:
|
delete |
Exclui um ponto de interrupção. |
detach |
Desconecta-se de um processo depurado. |
down]frames |
Move o quadro de pilha ativa para baixo. |
eco |
Exibe uma mensagem no console. |
enableNotificação de senhatypeName 0 | 1 |
Permite que (1) ou desativa (0) de notificações personalizadas para o tipo especificado. |
exit]exitcode |
Sai do shell de MDbg.exe e, opcionalmente, especifica o código de saída do processo. |
FOalcançar]OtherCommand |
Executa um comando em todos os threads. OtherCommand é um comando válido que opera em um thread; foreach OtherCommand executa o mesmo comando em todos os threads. |
funceval]-ad NumfunctionNameargs ... ] |
Realiza uma avaliação de função no segmento atual ativo onde a função para avaliar se é nomedafunção. O nome da função deve ser totalmente qualificado, incluindo espaços para nome. O -ad opção especifica o domínio de aplicativo para usar para resolver a função. Se a -ad opção não for especificada, o domínio de aplicativo para a resolução padrão é o domínio de aplicativo, onde se encontra o segmento que é usado para a avaliação da função. 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 para argumentos para a avaliação de função.. Para solicitar um valor de um domínio de aplicativo, prefixar a variável com o nome de domínio do módulo e o aplicativo; Por exemplo, funceval -ad 0 System.Object.ToString hello.exe#0!MyClass.g_rootRef. Esse 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. |
go |
Faz com que o programa continue até encontrar um ponto de interrupção, a sai do programa ou um evento (por exemplo, uma exceção não tratada) faz com que o programa pare. |
help]command - ou - ? command |
Exibe uma descrição de todos os comandos ou uma descrição detalhada de um comando especificado. |
ignore]event |
Faz com que o depurador para parar em apenas as exceções não tratadas. |
interceptFrameNumber |
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 set comando e continuar usando o Ir comando. |
kill |
Interrompe o processo ativo. |
list]modules | AppDomains | assemblies] |
Exibe os módulos carregados, domínios de aplicativo ou assemblies. |
loadassemblyName |
Carrega uma extensão da seguinte maneira: O assembly especificado é carregado e, em seguida, é feita uma tentativa para executar o método estático LoadExtension partir do Microsoft.Tools.Mdbg.Extension.Extension tipo. |
logeventType |
Definir ou exibir os eventos a serem registrados. |
mode]option on/off |
Define opções diferentes de depurador. Use mode sem opções para obter uma lista de modos de depuração e suas configurações atuais. |
segitorInfomonitorReference |
Exibe informações sobre o bloqueio do objeto monitor. |
newobjtypeNamearguments... |
Cria um novo objeto do tipo typeName. |
next |
Executa o código e move para a próxima linha (mesmo se a linha seguinte inclui várias chamadas de função). |
Opendump pathToDumpFile |
Abre o arquivo de despejo especificado para depuração. |
out |
Move para o fim da função atual. |
path]pathName |
Pesquisa o caminho especificado para os arquivos de origem, se o local nos binários não está disponível. |
print]var] |-d] |
Imprime todas as variáveis no escopo (Imprimir), imprime a variável especificada (Imprimir var), ou imprime as variáveis do depurador (Imprimir -d). |
printexception]-r |
Imprime a última exceção no segmento atual. Use o –r opção (recursivo) para atravessar o InnerException propriedade no objeto de exceção para obter informações sobre toda a cadeia de exceções. |
PROcessenum |
Exibe os processos ativos. |
quit]exitcode |
Fecha o shell de MDbg.exe, opcionalmente, especificar o código de saída do processo. |
resume]* | [~threadNumber |
Reinicia o segmento atual ou o segmento especificado pelo threadNumber parâmetro. Se o threadNumber parâmetro é especificado como * ou se o número de segmento começa com ~, o comando se aplica a todos os threads, exceto aquele especificado por threadNumber. Retomar um thread suspenso não tem nenhum efeito. |
run]-d(ebug) | -o(ptimize) |-enc] [path_to_exe]args_to_exe] |
Pára o processo atual (se houver) e inicia um novo. Se nenhum argumento executável for passado, esse comando executa o programa que foi executado anteriormente com o run comando. Se o argumento executável é fornecido, o programa especificado é executado usando os argumentos fornecidos opcionalmente. Carregamento de classe, carregamento de módulo e eventos de início do segmento sejam ignorados (como eles são por padrão), o programa pára na primeira instrução executável do thread principal. Você pode forçar o depurador para compilar o código do just-in-time (JIT) usando um dos três sinalizadores a seguintes:
|
Definir variável=valor |
Altera o valor de qualquer variável no escopo. Você 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 atuam como identificadores para o valor original, e 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 como nothing usando o seguinte comando: set $var= |
Setip-il number |
Define o ponteiro de instrução atual (IP) no arquivo para a posição especificada. Se você especificar o -il opção, o número representa um Microsoft intermediate language (MSIL) deslocamento no método. Caso contrário, o número representa um número de linha de origem. |
show]lines |
Especifica o número de linhas para mostrar. |
step |
Move de execução para a próxima função na linha atual ou move para a próxima linha se não houver nenhuma função Step into. |
suspend[* | [~]threadNumber |
Suspende o thread atual ou o segmento especificado pelo threadNumber parâmetro. Se threadNumber é especificado como *, o comando se aplica a todos os segmentos. Se o número de segmento começa com ~, o comando se aplica a todos os threads, exceto aquele especificado por threadNumber. Suspensos segmentos são excluídos do executando quando o processo é executado tanto o Ir ou etapa comando. Se não houver threads suspensos não no processo e você emitir o Ir comando, o processo não continuará. Nesse caso, pressione CTRL-C para dividir o processo. |
SYmbolcommandNamecommandValue |
Especifica um dos seguintes comandos:
|
thread]newThread[-nick apelido] |
O comando de thread sem parâmetros exibe todos os threads gerenciados no processo atual. Threads geralmente são identificados por seus números de thread; No entanto, se o thread tiver um apelido atribuído, o apelido é exibido. Você pode usar o -nick parâmetro para atribuir um apelido para o segmento.
Apelidos não podem ser números. Se o thread atual já tem um apelido atribuído, o apelido antigo é substituído pelo novo. Se o novo apelido é uma seqüência vazia (""), o apelido para o segmento atual é excluído e nenhum novo apelido é atribuído ao segmento. |
up |
Move o quadro de pilhas ativo para cima. |
uwgchandle]var] |address |
Imprime a variável controlada por um identificador. O identificador pode ser especificado por nome ou endereço. |
Quando |
Exibe atualmente ativo when instruções. Quando Excluir tudo | numnumnum …]]-Exclui a when instrução especificado pelo número, ou todos when instruções se all é especificado. when stopReasonspecific_condition do cmdcmdcmd …] ] - The stopReason parameter can be one of the following: StepComplete, ProcessExited, ThreadCreated, BreakpointHit, ModuleLoaded, ClassLoaded, AssemblyLoaded, AssemblyUnloaded, ControlCTrapped, ExceptionThrown, UnhandledExceptionThrown, AsyncStop, AttachComplete, UserBreak, EvalComplete, EvalException, RemapOpportunityReached, NativeStop. specific_condition pode ser uma das seguintes opções:
specific_condition deve estar vazio para outros valores de stopReason. |
where]-v] [-c depth]threadID |
Exibe informações sobre os quadros de pilha de depuração.
|
x-c numSymbols]module!pattern] |
Exibe as funções que correspondem a pattern para um módulo. Se numSymbols for especificado, a saída é limitada ao número especificado. Se ! (indicando uma expressão regular) não for especificado para padrão, todas as funções são exibidas. Se módulo de não é fornecido, todos os módulos carregados são exibidos. Símbolos (~ #) pode ser usado para definir pontos de interrupção usando o quebra comando. |
Comentários
Compile o aplicativo a ser depurado usando sinalizadores de compilador específicos que fazem com que o compilador ao gerar símbolos de depuração. Consulte a documentação do compilador para obter mais informações sobre esses sinalizadores. Você pode depurar aplicativos otimizados, mas estarão falta algumas informações de depuração. Por exemplo, muitas variáveis locais não será visíveis e linhas de origem não serão exatos.
Após compilar o seu aplicativo, digite mdbg no prompt de comando para iniciar uma sessão de depuração, conforme 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>
O mdbg> prompt indica que você está no depurador.
Uma vez no depurador, use os comandos e argumentos descritos na seção anterior.
Consulte também
Referência
Prompt de comando Visual Studio