Inspecionar uma exceção usando o Auxiliar de exceção

Lidar com exceções é um problema comum, independentemente da sua tecnologia ou nível de especialização. Pode ser uma experiência frustrante descobrir por que as exceções estão causando problemas em seu código. Quando está a depurar uma exceção no Visual Studio, queremos reduzir essa frustração fornecendo-lhe informações relevantes sobre exceções para o ajudar a depurar o seu problema mais rapidamente.

Auxiliar de exceção

Pausa na exceção

Quando o depurador para numa exceção, um ícone de exceção aparece à direita dessa linha de código. Um auxiliar de exceção não modal aparecerá perto do ícone de exceção.

Auxiliar de exceção ao lado de uma linha de código

Inspecionar informações de exceção

Você pode ler instantaneamente o tipo de exceção e a mensagem de exceção no Assistente de Exceções, e se a exceção foi lançada ou não foi tratada. Você pode inspecionar e exibir propriedades do objeto Exception clicando no link Exibir detalhes.

Analisar referências nulas

A partir do Visual Studio 2017, tanto para código .NET como para C/C++, quando atinge um NullReferenceException ou um AccessViolation, vê informação de análise de nulos no Exception Helper. A análise é exibida como texto abaixo da mensagem de exceção. Na ilustração abaixo, a informação é apresentada como "s foi nulo."

Análise nula auxiliar de exceção

Observação

A análise de referência nula em código gerido requer .NET versão 4.6.2. Atualmente, a análise nula não é suportada para a Plataforma Universal do Windows (UWP) nem para quaisquer outras aplicações .NET Core. Ele só está disponível durante a depuração de código que não tem nenhuma otimização de código Just-In-Time (JIT).

Definir configurações de exceção

Você pode configurar o depurador para interromper quando uma exceção do tipo atual é lançada a partir da seção Configurações de Exceção do Auxiliar de Exceção. Se o depurador estiver pausado em uma exceção lançada, você poderá usar a caixa de seleção para desabilitar a quebra nesse tipo de exceção quando lançada no futuro. Se você não quiser quebrar essa exceção específica quando lançada neste módulo específico, marque a caixa de seleção ao lado do nome do módulo em Exceto quando lançada de: na janela Configurações de exceção.

Inspecionar exceções internas

Se a exceção tiver exceções internas (InnerException, você poderá visualizá-las no Auxiliar de Exceção. Se houver várias exceções presentes, você poderá navegar entre elas usando as setas para a esquerda e para a direita mostradas acima da pilha de chamadas.

Assistente de exceção com exceção interna

Inspecionar exceções relançadas

Nos casos em que uma exceção foi thrown, o Auxiliar de Exceção mostra a pilha de chamadas desde a primeira vez que a exceção foi lançada. Se a exceção foi lançada várias vezes, somente a pilha de chamadas da exceção original é mostrada.

Auxiliar de exceção com exceções relançadas

Inspecionar exceções assíncronas (.NET)

A partir do .NET 9, o depurador do Visual Studio falha automaticamente quando um método Task assíncrono lança uma exceção dentro do código do framework .NET. Isto facilita a depuração de código assíncrono, especialmente no ASP.NET, porque as exceções são frequentemente lançadas através de fronteiras assíncronas.

Captura de tela do auxiliar de exceção com método assíncrono.

Ver a pilha de chamadas

A partir do Visual Studio 2022 versão 17.3, pode visualizar os frames da pilha de exceções dentro da janela da Pilha de Chamadas. Para exceções assíncronas, isso adiciona a capacidade de carregar rapidamente símbolos ou localizar fontes e ir diretamente para o site da exceção. Os quadros de exceção na janela Pilha de Chamadas fornecem recursos padrão da pilha de chamadas, como navegação automática, mudança rápida entre quadros, carregamento de símbolos e opções de descompilação para retornar ao código-fonte onde foi lançada a exceção.

Auxiliar de exceção com pilha de chamadas

Obtenha assistência de IA

Se tiveres Copilot, podes obter assistência de IA enquanto estás a depurar exceções. Basta procurar o botão Analyze com Copilot ou Perguntar ao CopilotCaptura de ecrã do botão Perguntar ao Copilot.. Nestes cenários, o Copilot já conhece o contexto das tuas perguntas, por isso não precisas de o dar tu próprio no chat. Para mais informações, consulte Debug com Copilot.

Se o Copilot quiser aceder ao contexto da janela de Saída para ajudar a analisar o problema, irá pedir-lhe essa permissão na janela do Chat. Se conceder permissão, permite que o Copilot realize análises adicionais da exceção com base nos detalhes do tempo de execução. O Assistente de Exceções, análise de variáveis, inspeção de código e outros cenários de depuração têm acesso a este contexto para a sessão de depuração atual.

Obtenha assistência de IA com o contexto do repositório

Quando estiver a trabalhar no Visual Studio com um repositório do Azure DevOps, a análise de exceções com o Copilot incorpora o contexto do repositório para uma resolução de exceções mais inteligente, mais rápida e mais precisa. O Copilot faz referência cruzada ao seu repositório aberto, incluindo bugs antigos, questões, pull requests e correções históricas, para fornecer insights acionáveis diretamente relacionados com a sua base de código.

Quando encontrar uma exceção:

  • O Copilot identifica as causas raiz mais prováveis, os componentes afetados e as possíveis soluções.
  • O Copilot aproveita o conhecimento do repositório para destacar problemas passados semelhantes e as suas soluções, ajudando-o a aprender com as correções existentes.
  • Exceções complexas são analisadas com contexto completo, conectando o comportamento do tempo de execução a padrões históricos, para que você possa entender valores inesperados ou incorretos rapidamente.
  • Ao revelar automaticamente correções e insights relevantes, o Copilot poupa tempo e reduz o processo de tentativa e erro frequentemente necessário para depurar problemas desafiantes.

Para bugs complexos que requerem diagnóstico de ponta a ponta para além de uma única exceção, pode usar o Agente Depurador. O Debugger Agent fornece um fluxo de trabalho agentico que reproduz, instrumenta e valida correções usando dados de execução em tempo real. Para mais informações, consulte Resolução de bugs com agência com o Debugger.

Compartilhar uma sessão de depuração com o Live Share

No Auxiliar de Exceção, pode iniciar uma sessão de Live Share usando o link Iniciar sessão do Live Share.... Qualquer pessoa que participe no Live Share pode ver o Auxiliar de Exceção juntamente com qualquer outra informação de depuração.