Partilhar via


Iniciar, interromper, navegar e parar o depurador do Visual Studio

Neste tópico

Neste tópico

Iniciar depuração

  • Anexo em um processo

  • Iniciar automaticamente um aplicativo no depurador

Navegue no código em uma sessão de depuração

  • Entrar no código usando pontos de interrupção ou quebrar tudo

  • Entrar em, ou para fora do código

  • Execução para um local ou a uma função especificada

  • Defina a próxima instrução para executar

  • Restrict que vai apenas a meu código

  • Entrar em chamadas de sistema

  • Entrar em propriedades e de operadores em código gerenciado

Depuração stop

Iniciar depuração

Quando a solução é aberta é o Visual Studio, você tem três opções para iniciar depuração:

Escolha Depurar, Iniciar Depuração (teclado: F5).

Seu aplicativo é iniciado e executam até então:

  • O depurador atinge um ponto de interrupção.

  • Você escolher Parar Depuração no menu de Depurar .

  • Uma exceção é lançada.

  • A saída do aplicativo.

Escolha Depurar, Depuração Completa (teclado: F11) ou Depurar, Depuração Parcial (teclado: F10).

Seus inicia e então quebras na primeira linha do aplicativo.

Em uma janela de exibição source, selecione uma linha de código executável e escolha Executar até o Cursor no menu de contexto.

Seu aplicativo é iniciado e executa até que atinge um ponto de interrupção ou o local do cursor, qualquer vem primeiro.

y740d9d3.collapse_all(pt-br,VS.110).gifAnexo em um processo

O depurador também pode anexar a um programa que está sendo executado em um processo fora do Visual Studio.Depois que você anexa um programa, você pode usar comandos de execução do depurador, inspecione o estado do programa, e assim por diante.Sua capacidade para inspecionar o programa pode ser limitada, dependendo se o programa esteve compilado com informações de depuração e se você tem acesso ao código-fonte do programa, e se o compilador de tempo de execução JIT comuns de linguagem está controlando informações de depuração.

Para anexar a um processo que está executando em seu computador local

Escolha Depurar, Anexar a Processo.Na caixa de diálogo de Anexar a Processo , selecione o processo da lista de Processos Disponíveis , e então escolha Anexar.

Anexar a caixa de diálogo do processo

Consulte Anexar a processos em execução para maiores informações.

y740d9d3.collapse_all(pt-br,VS.110).gifIniciar automaticamente um aplicativo no depurador

Às vezes, você precisará depurar o código de inicialização para um aplicativo que é lançado por outro processo.Os exemplos incluem serviços e ações personalizadas de configuração.Nessas situações, você pode ter o lançamento do depurador e anexá-la automaticamente quando seu aplicativo é iniciado.

  1. Inicie o Editor do Registro (regedit.exe).

  2. Navegue até a pasta de HKEY_LOCAL_MACHINE \ software \ Microsoft \ Windows NT \ CurrentVersion \ opções execução do arquivo de imagem .

  3. Selecione a pasta do aplicativo que você deseja iniciar o depurador.

    Se o nome do aplicativo não estiver listado como uma pasta filho, Image File Execution Options selecione e clique em Novo, Chave no menu de atalho.Selecione a nova chave, escolha Renomear no menu de atalho, digite o nome do aplicativo.

  4. No menu de atalho de pasta de aplicativo, escolha Novo, Valor da cadeia de caracteres.

  5. Altere o nome do novo valor de New Value a depurador.

  6. No menu de atalho de entrada do depurador, escolha Modificar.

  7. Na caixa de diálogo cadeia de caracteres de edição, digite vsjitdebugger.exe na caixa de Dados do valor .

    Editar caixa de diálogo String

Depurador automática iniciar entrada em regedit.exe

Neste tópico

y740d9d3.collapse_all(pt-br,VS.110).gifEntrar no código usando pontos de interrupção ou quebrar tudo

Quando você está depurando um aplicativo com o depurador do Visual Studio, seu aplicativo ou está executando executar () ou está no modo de interrupção.

O depurador interrompe a execução do aplicativo quando a execução atinge um ponto de interrupção ou quando ocorre uma exceção.Você também pode interromper a execução manualmente a qualquer momento.

Um ponto de interrupção é um sinal que instrui o depurador para temporariamente suspender a execução do seu aplicativo em algum ponto.Quando a execução é suspendida em um ponto de interrupção, seriam seu programa em modo de interrupção.Entre no modo de interrupção não para ou não termina a execução do programa; a execução pode ser continuada a qualquer momento.

A maioria dos recursos do depurador, como exibir os valores de variáveis locais na janela ou a avaliação de expressões na janela do relógio, estão disponíveis somente no modo de interrupção.Todos os elementos de seu aplicativo permanecem (as funções, variáveis, e objetos permanecem na memória, por exemplo), mas seus movimentos e as atividades são suspensas.Durante o modo de interrupção, você pode examinar as posições e os estados de elementos procurar violações ou bugs.Você também pode fazer ajustes ao aplicativo quando no modo de interrupção

Você pode configurar pontos de interrupção para suspender a execução com base em um número de condições.Consulte Usando pontos de interrupção e Tracepoints.Esta seção descreve duas maneiras básicas de entrar no código.

Definir pontos de interrupção no código

Para definir um ponto de interrupção simples em seu código, abra o arquivo de origem no editor do Visual Studio.Defina o cursor na linha de código em que você deseja quebrar, e clique em Ponto de Interrupção, Inserir Ponto de Interrupção no menu de contexto (teclado: F9.O depurador interrompe a execução right before a linha é executada.

Definir um ponto de interrupção

Os pontos de interrupção no Visual Studio fornece um conjunto rico de funcionalidades adicionais, como pontos de interrupção e condicionais tracepoints.Consulte Usando pontos de interrupção e Tracepoints.

Quebre manualmente no código

Para quebrar na linha de código a seguir disponível em um aplicativo executando, escolha Depurar, Interromper Tudo (teclado: Ctrl+Alt+Break).

  • Se você está depurando com o forte de código my opção ativada, você interrompe na linha de código seguinte em seu projeto.Consulte Restrict stepping to Just My Code.

  • Se você está depurando vários programas, um ponto de interrupção ou quebra de linha de comando todas as afeta todos os programas que estão sendo depurado por padrão.Consulte Change the break behavior of multiple processes neste tópico.

  • Se você interrompe ao executar o código sem arquivos correspondentes de origem ou do símbolo () .pdf), o depurador exibe Arquivos de origem não encontrado ou uma página de Símbolos não encontrado que podem ajudá-lo a encontrar os arquivos adequados.Consulte Localizar símbolo (.pdb), origem e arquivos binários.

    Se você não pode acessar arquivos de suporte, você ainda pode depurar as instruções de assembly na janela de desmontagem.

y740d9d3.collapse_all(pt-br,VS.110).gifEntrar em, ou para fora do código

Um dos procedimentos de depuração mais comum é pisando.Depuração está executando a linha de código por vez.Quando você paralisou a execução, como executar o depurador para um ponto de interrupção, você pode usar três comandos de menu de Depurar percorrer o código:

Comando de menu

Atalho de teclado

Descrição

Step Into

F11

Se a linha contém uma chamada de função, Depuração Completa executa somente a chamada próprio, então pára na primeira linha do código dentro da função.Caso contrário, Depuração Completa executa a próxima instrução.

Step Over

F10

Se a linha contém uma chamada de função, Depuração Parcial executa a função chamada, então pára na primeira linha do código dentro da função de chamada.Caso contrário, Depuração Completa executa a próxima instrução.

Step Out

Shift+F11

Depuração Circular retomar a execução do código até que a função retorna, então divide no ponto na função de retorno de chamada.

  • Em uma chamada de função aninhada, etapas de Depuração Completa função em mais profundidade aninhada.Se você usar Depuração Completa em uma chamada como Func1(Func2()), o depurador avança na função Func2.

  • O depurador avança realmente com instruções do código em vez de físicos linhas.Por exemplo uma cláusula de if pode ser gravadas em uma linha:

    int x = 42;
    string s = "Not answered";
    if( int x == 42) s = "Answered!";
    
    Dim x As Integet = 42
    Dim s As String = "Not answered"
    If x = 42 Then s = "Answered!"
    

    Quando você vai nesta linha, o depurador trata a condição como uma etapa e a outra resultado como (nesse exemplo, a condição for verdadeira.)

y740d9d3.collapse_all(pt-br,VS.110).gifExecução para um local ou a uma função especificada

Às vezes você desejará executar a qualquer ponto no código, e a execução pára em.Se você tiver um ponto de interrupção definido no local onde você deseja quebrar, escolha Depurar, Iniciar Depuração se você não começou a depuração, ou, ou Depurar, Continuar.(Em ambos os casos F5 é a chave de atalho).O depurador para no ponto de interrupção no código a seguir.Escolha Depurar, Continuar até que você atingir o ponto de interrupção que você deseja.Consulte Set breakpoints in the code neste tópico.

Você também pode executar a onde você colocou o cursor no editor de códigos, ou execução para a função especificada.

Execução para o local do cursor

Para executar o local do cursor, coloque o cursor em uma linha de código executável em uma janela de origem.No menu de contexto de edição, escolha Executar até o Cursor.

Executar a uma função na pilha de chamadas

Na janela de Pilha de Chamadas , selecione a função, e escolha Executar até o Cursor no menu de contexto.

Executar a função especificada por nome

Você pode comando o depurador execute o aplicativo até que atinja uma função especificada.Você pode especificar a função por nome ou você pode escolha a pilha de chamadas.

Para especificar nome por uma função, escolha Depurar, Novo Ponto de Interrupção, Interromper na Funçãopara, digite o nome da função e outras informações de identificação.

Caixa de diálogo Novo ponto de interrupção

Se a função estiver sobrecarregada ou está em vários namespace, você pode escolher as funções que você deseja na caixa de diálogo de Escolher Pontos de Interrupção .

Escolha a caixa de diálogo pontos de interrupção

y740d9d3.collapse_all(pt-br,VS.110).gifDefina a próxima instrução para executar

Depois de quebra no depurador, você pode mover o ponto de execução para definir a próxima declaração de código a ser executado.Uma seta amarela em uma margem de origem ou de uma janela de desmontagem marca o local da próxima instrução a ser executada.Movendo essa seta, você pode ignorar uma parte do código ou retornar a uma linha executada anteriormente.Você pode usar este para situações tais como o salto de uma seção de código que contém um bug conhecido.

Exemplo2

Para definir a próxima instrução para executar, use um destes procedimentos:

  • Em uma janela de origem, arraste a seta amarela em uma localidade onde você deseja definir a seguinte declaração no mesmo arquivo de origem

  • Em uma janela de origem, defina o cursor na linha que você deseja executar em seguida e escolha Definir Próxima Declaração no menu de contexto.

  • Na janela de desmontagem, defina o cursor na instrução de assembly que você deseja executar em seguida e escolha Definir Próxima Declaração no menu de contexto.

Observação de cuidadoCuidado

Defina a instrução a seguir faz com que o programa diferentemente de ir diretamente para o novo local.Use este comando com cuidado:

  • As instruções entre os pontos antigo e novo de execução não são executadas.

  • Se você move o ponto de execução para trás, as instruções interveniente não são desfeitas.

  • Mova a declaração a seguir para outra função ou escopo geralmente resulta de danos a pilha de chamadas, causando um erro em tempo de execução ou uma exceção.Se você tentar mova a declaração a seguir para outro escopo, o depurador abrir uma caixa de diálogo com um aviso e oferece a você a oportunidade para cancelar a operação.No Visual Basic, você não pode mover a declaração a seguir para outro escopo ou função.

  • Em C++ nativo, se você tiver verificações de tempo de execução ativadas, defina a instrução a seguir pode causar uma exceção seja lançada quando a execução atinge o final do método.

  • Quando edite e Continue são ativadas, Definir Próxima Declaração falha se você fez as edições que edite e Continue não podem remapear imediatamente.Isso pode ocorrer, por exemplo, se você editou o código em um bloco catch.Quando isso acontece.Você verá uma mensagem de erro que informa que a operação não é suportado.

ObservaçãoObservação

No código gerenciado, você não pode mover a declaração a seguir nas seguintes circunstâncias:

  • A próxima instrução estiver em um método diferente do que a instrução atual.

  • A depuração foi iniciada usando a depuração just-in-time.

  • Um callstack desenrola está em andamento.

  • Uma exceção de System.StackOverflowException ou de System.Threading.ThreadAbortException foi lançada.

Você não pode definir a próxima instrução quando seu aplicativo é executado ativamente.Para definir a instrução a seguir, o depurador deve estiver no modo de interrupção.

y740d9d3.collapse_all(pt-br,VS.110).gifRestrict que vai apenas a meu código

Às vezes, quando você depura, você pode querer examinar somente o código que você escreveu e ignorar outro código, como chamadas do sistema.Você pode fazer isso com apenas my depuração de código.Meu não apenas código do usuário de oculta de código para que ele não aparece em janelas de depuração.Quando você vai, as etapas do depurador com nenhum código do usuário não mas não param nele.

Para ativar ou desativar apenas my depuração de código, escolha Depurar, Opções e Configurações.Em Depurando, a página de Geral , verifica ou desmarca Habilitar Apenas Meu Código.

Para distinguir o código do usuário do código do usuário, não apenas meu código parece arquivos do símbolo (PDB) e otimizações de programa.

Em uma construção de depuração padrão, a otimização é desativada e símbolos de depuração são criados para todos os módulos.Quando você executa uma construção de depuração, esses módulos são consideradas código do usuário.Mas uma função da biblioteca que é otimizada e não têm símbolos de depuração não é considerado código do usuário.Meu apenas código impede a execução pára em pontos de interrupção no código de biblioteca, que não é geralmente código que você está interessado na depuração.Na janela de pontos de interrupção, esses pontos de interrupção aparecerá com o ícone desativado de ponto de interrupção.

Consulte para qualquer código e que ele pare em todos os pontos de interrupção, você pode desativar apenas my depuração de código usando a caixa de diálogo de Opções .

Três atributos também influencia o que o depurador considera ser meu código: DebuggerNonUserCodeAttribute informa o depurador que o código que é aplicado a não é my código.DebuggerHiddenAttribute oculta o código do depurador, mesmo se apenas meu código está desativado.DebuggerStepThroughAttribute informa o depurador para percorrer o código que é aplicado, em vez da etapa no código.

Quando apenas meu código é ativado, você pode escolher Interromper Tudo no menu de Depurar e interromper a execução em um local onde não há nenhum meu código para exibir.Quando isso acontece, nenhum código é exibido.Além disso, se você escolher um comando de Etapa , ela levará você para a próxima linha de código meu.

As instruções programação de interrupção, como instruções do Visual Basic Stop , são manipuladas de forma diferente.O depurador interrompe sempre nessas instruções, mesmo quando apenas meu código é ativado.Nesta situação, o código do usuário não é exibido em vez de oculto, mas ainda levará você entrar fora do código do usuário não para a próxima linha de código meu.

ObservaçãoObservação

Meu apenas código não há suporte para projetos de dispositivo.

y740d9d3.collapse_all(pt-br,VS.110).gifEntrar em chamadas de sistema

Se você carregou símbolos de depuração para o código do sistema e apenas meu código não está ativado, você pode entrar em uma chamada do sistema exatamente como você pode qualquer outra chamada.

Para saber como desativar apenas meu código, consulte Restrict stepping to Just My Code

Para acessar arquivos de símbolo da Microsoft, consulte Usando Windows e outros símbolos da Microsoft no tópico de Localizar símbolo (.pdb), origem e arquivos binários .

Para carregar símbolos para um componente do sistema específico quando você depura:

  1. Abra a janela de módulos (teclado: Ctrl+Alt+U).

  2. Selecione o módulo que você deseja carregar símbolos para.

    Você pode determinar quais módulos têm símbolos carregados olhando para a coluna de Status do Símbolo .

  3. Escolha Carregar Símbolos no menu de contexto.

y740d9d3.collapse_all(pt-br,VS.110).gifEntrar em propriedades e de operadores em código gerenciado

O depurador avança sobre propriedades e operadores em código gerenciado por padrão.Na maioria dos casos, isso fornece uma melhor experiência de depuração.Para ativar avançar em propriedades ou de operadores, escolha Depurar, Opções e Configurações.Em Depurando, a página de Geral , desmarque a caixa de seleção de Depurar parcialmente propriedades e operadores (Somente gerenciado)

Neste tópico

Depuração stop

Parando meios para depuração de finalizar a sessão de depuração.Parando mídia de execução para encerrar o processo você está depurando e de fim a sessão de depuração.Não deve ser confundido com interromper a execução pára, que temporariamente a execução do processo que você está depurando mas as folhas a sessão de depuração ativo.Desanexar de um processo para depuração do processo mas as folhas ele executa.

Pare a depuração do Visual Studio

Escolha Depurar, Parar Depuração.

Parar Depuração finaliza o processo que você está depurando se o programa foi iniciado Visual Studio.Se você tiver anexado ao processo em vez de inicialização do Visual Studio, o processo continua a executar.

Depuração e reinicie stop

Escolha Depurar, Reiniciar para parar a sessão atual de depuração e para reiniciar o projeto de inicialização no depurador.

Feche o aplicativo que está sendo depurado

Quando você sai de um aplicativo que está sendo depurado, depuração para automaticamente.