Editar

Perguntas frequentes – localizador de recursos do depurador

Esta documentação aborda perguntas frequentes sobre recursos de depuração no Visual Studio. Ele também mapeia tarefas de depuração ou problemas para o recurso relevante no depurador do Visual Studio. Esses links abrangem tarefas ou problemas como depuração de aplicativos de várias threads, navegação de código, perda de memória, inspeção de variáveis, uso de pontos de interrupção, depuração de código externo e muito mais. Se você precisar de uma visão geral dos recursos do depurador, confira Introdução ao depurador.

Pontos de interrupção

  • Como pausar o código em execução para inspecionar uma linha de código que pode conter um bug?

    {2>Defina um ponto de interrupção.<2} Para obter mais informações, confira Pontos de interrupção.

  • Minha variável tem um valor inesperado. Ou quero inspecionar meu aplicativo quando ele atinge um estado específico?

    Tente um ponto de interrupção condicional para controlar onde e quando um ponto de interrupção é ativado usando a lógica condicional. Clique com o botão direito do mouse em um ponto de interrupção para adicionar condições. Defina a condição como true quando a variável for igual ao valor inesperado.

    Para obter mais informações, consulte Condições de ponto de interrupção.

  • Como registrar informações na janela de saída em condições configuráveis sem modificar nem interromper meu código?

    Os tracepoints permitem registrar informações na janela “Saída” em condições configuráveis sem modificar nem interromper o código.

  • Como saber quando o valor da minha variável é alterado?

    Para C++, defina um ponto de interrupção de dados.

    Para aplicativos que usam o .NET Core 3, você também pode definir um ponto de interrupção de dados.

    Caso contrário, somente para C# e F#, você pode rastrear uma ID de objeto com um ponto de interrupção condicional.

  • Como interromper a execução somente se outro ponto de interrupção for atingido?

    Defina um ponto de interrupção dependente que interrompa a execução somente se outro ponto de interrupção for atingido primeiro. Para obter mais informações, confira Ponto de interrupção dependente.

  • Posso atingir um ponto de interrupção apenas uma vez?

    Defina um ponto de interrupção temporário que permite interromper o código apenas uma vez. Para obter mais informações, confira Ponto de interrupção temporário.

  • Posso pausar o código dentro de um loop em uma determinada iteração?

    Defina um ponto de interrupção dependente que interrompa a execução somente se outro ponto de interrupção for atingido primeiro. Para obter mais informações, confira Contagem de ocorrências.

  • Como pausar o código no início de uma função quando você souber o nome da função, mas não seu local?

    Você pode fazer isso com um ponto de interrupção de função. Para obter mais informações, consulte Definir pontos de interrupção de função.

  • Como pausar o código no início de várias funções com o mesmo nome?

    Quando você tem várias funções com o mesmo nome (funções sobrecarregadas ou funções em projetos diferentes), pode usar um ponto de interrupção de função.

  • Gerenciar e controlar meus pontos de interrupção

    Use a janela Pontos de interrupção. Para obter mais informações, confira Gerenciar pontos de interrupção.

  • Pausar código e depurar quando uma exceção tratada ou sem tratamento específica é gerada

    Embora o Auxiliar de Exceção mostre onde ocorreu um erro, se você quiser pausar e depurar o erro específico, poderá instruir o depurador a interromper quando uma exceção for gerada.

  • Definir um ponto de interrupção da pilha de chamadas

    Se você quiser pausar e depurar o código ao examinar o fluxo de execução ou exibir funções nas janelas Pilha de Chamadas, consulte Definir um ponto de interrupção na janela Pilha de Chamadas.

  • Pausar o código em uma instrução de assembly específica

    Você pode fazer isso definindo um ponto de interrupção na janela Desmontagem.

  • Como aprender os comandos para percorrer meu código durante a depuração?

    Para obter mais informações, confira Navegar código com o depurador.

  • Posso executar o código em uma linha específica enquanto ignoro pontos de interrupção sem removê-los ou desabilitá-los?

    Você pode usar "Forçar Executar para Cursor" para esses cenários. Você pode manter os pontos de interrupção e o depurador os ignorará até atingir a linha de código com o cursor. Ele também ignorará qualquer uma das condições de interrupção de exceções de primeira chance que possam ocorrer. Para obter mais informações, confira Navegar código com o depurador.

  • Se minha linha de código tiver chamadas para métodos diferentes, posso intervir em um método específico?

    Clique com o botão direito do mouse na linha de código para abrir um menu de contexto que permite que você selecione "Intervir em Específico". Isso mostrará uma lista de todos os métodos nos quais você pode intervir. Agora você pode selecionar o método de interesse.

Inspecionar e visualizar dados

  • Como verificar o valor das variáveis durante a execução do meu aplicativo?

    Passe o mouse sobre variáveis usando dicas de dados ou inspecione variáveis na janela Automáticos e Locais.

  • Posso observar o valor de alteração de uma variável específica?

    Defina um relógio na variável. Para obter mais informações, consulte Definir um relógio em variáveis.

  • Como exibir cadeias de caracteres que são muito longas para a janela do depurador?

    O visualizador de cadeia de caracteres mostra cadeias de caracteres que são muito longas para uma dica de dados ou janela do depurador. Ele também pode ajudar você a identificar cadeias de caracteres malformadas.
    Os visualizadores de cadeias de caracteres internos no Visual Studio incluem as opções texto, XML, HTML e JSON.

  • Como exibir objetos de coleção grandes?

    O visualizador DataSet permite exibir o conteúdo de um DataSet, DataTable, DataView ou DataViewManager. O Visualizador IEnumerable permite que você exiba objetos como Matrizes, Lista etc. Para obter mais informações, confira Visualizadores tabulares.

Depurar um aplicativo que já está em execução

  • Como depurar aplicativos em execução em computadores locais ou remotos, depurar vários processos simultaneamente, depurar aplicativos que não foram criados no Visual Studio ou depurar qualquer aplicativo não iniciado no Visual Studio?

    Consulte Anexar a um processo em execução.

  • Como anexar ao mesmo aplicativo repetidamente?

    Você pode usar Reanexar ao Processo (Shift+Alt+P) para permitir que você inicie a depuração do aplicativo com um clique sem precisar passar pela caixa de diálogo Anexar ao Processo sempre. Confira Reanexar ao processo

Depurar aplicativos multi-threaded

Analisar a memória

  • Meu aplicativo está com perda de memória?

    Faça um instantâneo e abra-o com a ferramenta de memória para solucionar problemas mais adiante. Confira Medir o uso de memória.

  • Como analisar o uso de memória para aplicativos nativos ou gerenciados?

    Use a ferramenta de memória do Visual Studio por meio de depuração dinâmica, despejos de heap ou o criador de perfil de desempenho.
    Confira Escolher uma ferramenta de análise de memória.

  • Como analisar o uso de memória para aplicativos nativos ou gerenciados sem anexar um depurador? Use o criador de perfil de desempenho do Visual Studio com a ferramenta de uso de memória habilitada.
    Confira Analisar o uso de memória.

  • Como comparar o uso de memória entre dois pontos no tempo?

    Compare instantâneos na ferramenta de memória ou compare dois despejos de heap usando a funcionalidade diff. Confira Analisar o uso de memória.

Depuração de código externo

  • Como ver apenas o código do usuário durante a depuração?

    Apenas Meu Código é um recurso de depuração do Visual Studio que percorre automaticamente as chamadas para o sistema, a estrutura e outros códigos que não são de usuários. Na janela Pilha de Chamadas, Apenas Meu Código recolhe essas chamadas em quadros [Código Externo]. Confira Depurar apenas o código do usuário com Apenas Meu Código

  • Como exibir ou depurar as instruções brutas do assembly que meu programa está executando?

    Use a Janela desmontagem em Depurar > Windows > Desmontagem. Você pode percorrer uma instrução por vez e até mesmo definir pontos de interrupção em instruções de assembly individuais.

  • Posso ver o código-fonte para bibliotecas .NET?

    Habilite os Servidores de Símbolos da Microsoft em Depurar > Opções > Símbolos para baixar símbolos e origem para bibliotecas .NET. Confira Especificar símbolo

  • Como carregar PDBs de um local ou servidor específico ou compartilhado?

    Configure seus Servidores de Símbolos em Depurar > Opções > Símbolos. Confira Especificar símbolo

  • Como nunca carregar um PDB específico? Ou como posso sempre carregar um?

    Configure suas Listas de Inclusão e Exclusão em Depurar > Opções > Símbolos.
    Confira Especificar símbolo

Configurar a depuração

  • Como definir configurações do depurador?

    Para definir as opções do depurador e as configurações do projeto do depurador, confira Configurações e preparação do depurador.

  • Como personalizar as informações mostradas no depurador?

    Talvez você queira mostrar informações diferentes do tipo de objeto como o valor em janelas diferentes do depurador. Para código C#, Visual Basic, F#e C++/CLI, use o atributo DebuggerDisplay. Para obter opções mais avançadas, você também pode personalizar a interface do usuário criando um visualizador personalizado. Para C++nativo, use a estrutura NatVis.

Tarefas adicionais