Solução de problemas e problemas conhecidos para instantâneo depuração no Visual Studio

              Aplica-se a: Visual Studio 2022

Este artigo fornece resoluções de problemas comuns que você pode encontrar ao depurar um aplicativo do Azure com o Depurador de Instantâneos no Visual Studio.

Se as etapas descritas neste artigo não resolve seu problema, pesquise o problema em Developer Community ou reporte um novo problema escolhendo Ajuda>Para enviarrelatório de comentários >um problema no Visual Studio.

Problema: "Anexar depurador de instantâneos" encontra um erro de código http status

Se você vir o seguinte erro na janela Saída durante a tentativa de anexação, pode ser um problema conhecido listado nas seções a seguir. Experimente as soluções propostas e, se o problema continuar a persistir, entre em contato com o alias anterior.

[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX

(401) Não autorizado

Esse erro indica que a chamada REST emitida pelo Visual Studio para o Azure usa uma credencial inválida.

Siga estas etapas:

  • Verifique se sua conta de personalização do Visual Studio tem permissões para a assinatura do Azure e o recurso ao qual você está anexando. Uma maneira rápida de determinar isso é marcar se o recurso está disponível na caixa de diálogo de DepurarAnexar Depurar >Depurador de Instantâneo...>Recurso >do AzureSelecione Existente ou em Explorer de Nuvem.
  • Se esse erro continuar a persistir, use um dos canais de comentários descritos no início deste artigo.

Se você tiver habilitado a Autenticação/Autorização (EasyAuth) em seu Serviço de Aplicativo, poderá encontrar um erro 401 com LaunchAgentAsync na mensagem de erro da pilha de chamadas. Verifique se a ação a ser executada quando a solicitação não for autenticada está definida como Permitir solicitações anônimas (nenhuma ação) no portal do Azure e fornecer um authorization.json em D:\Home\sites\wwwroot com o conteúdo a seguir.

{
  "routes": [
    {
      "path_prefix": "/",
      "policies": {
        "unauthenticated_action": "RedirectToLoginPage"
      }
    },
    {
      "http_methods": [ "POST" ],
      "path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
      "policies": {
        "unauthenticated_action": "AllowAnonymous"
      }
    }
  ]
}

A primeira rota garante efetivamente o domínio do aplicativo semelhante ao logon com [IdentityProvider]. A segunda rota expõe o ponto de extremidade SnapshotDebugger AgentLaunch fora da autenticação, que executa a ação predefinida de iniciar o agente de diagnóstico SnapshotDebugger somente se a extensão de site pré-instalada do SnapshotDebugger estiver habilitada para seu serviço de aplicativo. Para obter mais informações sobre a configuração do authorization.json , consulte Regras de autorização de URL.

(403) Proibido

O erro 403 – Proibido indica que a permissão foi negada. Muitos cenários diferentes podem causar esse erro.

Siga estas etapas:

  • Verifique se sua conta do Visual Studio tem uma assinatura válida do Azure com as permissões de RBAC (Role-Based Controle de Acesso) necessárias para o recurso. Para AppService, marcar se você tiver permissões para consultar o Plano Serviço de Aplicativo hospedar seu aplicativo.
  • Verifique se o carimbo de data/hora do computador cliente está correto e atualizado. Servidores com carimbos de data/hora desativados em mais de 15 minutos do carimbo de data/hora da solicitação geralmente produzem esse erro.
  • Se esse erro continuar a persistir, use um dos canais de comentários descritos no início deste artigo.

(404) Não encontrado

O erro 404 – Não Encontrado indica que o site não pôde ser encontrado no servidor.

Siga estas etapas:

  • Verifique se você tem um site implantado e em execução no recurso Serviço de Aplicativo ao qual você está anexando.
  • Verifique se o site está disponível em https://< resource.azurewebsites.net>
  • Verifique se seu aplicativo Web personalizado em execução correta não retorna um código de status de 404 quando acessado em https://< resource.azurewebsites.net>.
  • Se esse erro continuar a persistir, use um dos canais de comentários descritos no início deste artigo.

(406) Não aceitável

O erro 406 – Não Aceitável indica que o servidor não pode responder ao tipo definido no cabeçalho Aceitar da solicitação.

Siga estas etapas:

  • Verifique se seu site está disponível em https://< resource.azurewebsites.net>.
  • Verifique se seu site não foi migrado para novas instâncias. O Depurador de Instantâneos usa a noção de ARRAffinity para roteamento de solicitações para instâncias específicas que podem produzir esse erro intermitentemente.
  • Se esse erro continuar a persistir, use um dos canais de comentários descritos no início deste artigo.

(409) Conflito

O erro 409 – Conflito indica que a solicitação entra em conflito com o estado do servidor atual.

Esse é um problema conhecido que ocorre quando um usuário tenta anexar o Depurador de Instantâneos em um AppService que habilitou o ApplicationInsights. ApplicationInsights define os AppSettings com um invólucro diferente do Visual Studio, causando esse problema.

Resolvemos isso no Visual Studio 2019.

Siga estas etapas:

  • Se esse erro continuar a persistir, use um dos canais de comentários descritos no início deste artigo.

(500) Erro interno do servidor

O erro 500 – Erro interno do servidor indica que o site está desligado ou o servidor não pode lidar com a solicitação. O Depurador de Instantâneos funciona apenas em aplicativos em execução. O Depurador de Instantâneos do Application Insights fornece instantâneos em exceções e pode ser a melhor ferramenta para suas necessidades.

(502) Gateway ruim

O erro 502 – Gateway incorreto indica um problema de rede do lado do servidor e pode ser temporário.

Siga estas etapas:

  • Tente esperar alguns minutos antes de anexar o Depurador de Instantâneos novamente.
  • Se esse erro continuar a persistir, use um dos canais de comentários descritos no início deste artigo.

Problema: o Snappoint não está ativado

Se você vir um ícone de aviso com seu snappoint em vez do ícone de snappoint regular, o snappoint não será ativado.

Captura de tela para mostrar que o Snappoint não está ativado.

Siga estas etapas:

  • Use a mesma versão do código-fonte para criar e implantar seu aplicativo.
  • Verifique se você está carregando os símbolos corretos para sua implantação.
  • Para fazer isso, exiba a janela Módulos durante a Depuração de Instantâneos e verifique se a coluna Arquivo de Símbolo mostra um arquivo .pdb carregado para o módulo que você está depurando.
    • O Depurador de Instantâneos tentará baixar e usar automaticamente símbolos para sua implantação.

Problema: os símbolos não são carregados quando abro um instantâneo

Se você vir a janela a seguir, os símbolos não foram carregados.

Captura de tela para mostrar que os símbolos não são carregados.

Siga estas etapas:

  • Selecione Alterar Configurações de Símbolo... na página.

  • Nas configurações de Símbolo de Depuração>, adicione um diretório de cache de símbolo.

  • Reinicie instantâneo depuração depois que o caminho do símbolo tiver sido definido.

    Os símbolos ou arquivos .pdb disponíveis em seu projeto devem corresponder à implantação do Serviço de Aplicativo. A maioria das implantações (implantação por meio do Visual Studio, CI/CD com a Azure Pipelines ou Kudu, etc.) publica seus arquivos de símbolo junto com seu Serviço de Aplicativo. Definir o diretório de cache de símbolo permite que o Visual Studio use esses símbolos.

    Captura de tela que mostra as configurações para símbolos.

  • Como alternativa, se sua organização usar um servidor de símbolos ou soltar símbolos em um caminho diferente, use as configurações de símbolo para carregar os símbolos corretos para sua implantação.

Problema: não consigo ver a opção "Anexar Depurador de Instantâneos" no Cloud Explorer

Siga estas etapas:

  • Verifique se o componente Depurador de Instantâneos está instalado. Abra o Instalador do Visual Studio e marcar o componente Depurador de Instantâneos na carga de trabalho do Azure.

  • Para versões posteriores ou do Visual Studio 2019, verifique se o aplicativo tem suporte:

    • Azure App Services – ASP.NET aplicativos em execução no .NET Framework 4.6.1 ou posterior.
    • Azure App Services – ASP.NET Core aplicativos em execução no .NET Core 2.0 ou posterior no Windows.
    • Azure Máquinas Virtuais (e conjunto de dimensionamento de máquinas virtuais) – ASP.NET aplicativos em execução no .NET Framework 4.6.1 ou posterior.
    • Azure Máquinas Virtuais (e conjunto de dimensionamento de máquinas virtuais) – ASP.NET Core aplicativos em execução no .NET Core 2.0 ou posterior no Windows.
    • Serviços de Kubernetes do Azure – ASP.NET Core aplicativos em execução no .NET Core 2.2 ou posterior no Debian 9.
    • Serviços de Kubernetes do Azure – ASP.NET Core aplicativos em execução no .NET Core 2.2 ou posterior no Alpine 3.8.
    • Serviços de Kubernetes do Azure – ASP.NET Core aplicativos em execução no .NET Core 2.2 ou posterior no Ubuntu 18.04.

Problema: só vejo instantâneos limitados nas Ferramentas de Diagnóstico

Captura de tela que mostra o snappoint limitado.

Siga estas etapas:

  • Os instantâneos tomam pouca memória, mas têm uma cobrança de confirmação. Se o Depurador de Instantâneo detectar que seu servidor está sob carga de memória pesada, ele não tirará instantâneos. Você pode excluir instantâneos já capturados interrompendo a sessão de Depurador de Instantâneos e tentando novamente.

Problema: a depuração de instantâneo com várias versões do Visual Studio me dá erros (Visual Studio 2019 ou versões posteriores)

O Visual Studio 2019 requer uma versão mais recente da extensão do site de depurador de instantâneos em seu Serviço de Aplicativo do Azure. Essa versão não é compatível com a versão mais antiga da extensão de site do Depurador de Instantâneos usada pelo Visual Studio 2017. Você receberá o seguinte erro se tentar anexar o Depurador de Instantâneos no Visual Studio 2019 a um Serviço de Aplicativo do Azure que foi depurado anteriormente pelo Depurador de Instantâneos no Visual Studio 2017:

Captura de tela da extensão de site de depurador de instantâneos incompatível Visual Studio 2019.

Por outro lado, se você usar o Visual Studio 2017 para anexar o Depurador de Instantâneos a um Serviço de Aplicativo do Azure que foi depurado anteriormente pelo Depurador de Instantâneos no Visual Studio 2019, você receberá o seguinte erro:

Captura de tela da extensão de site de depurador de instantâneos incompatível Visual Studio 2017.

Para corrigir isso, exclua as seguintes configurações de aplicativo no portal do Azure e anexe o Depurador de Instantâneo novamente:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Problema: estou anexando à conta de armazenamento ou recurso do Azure errada/antiga

Siga estas etapas:

As entradas "recurso do Azure" e "Conta de armazenamento" usam nomes de recursos como chaves para que ações como migrar um recurso para diferentes assinaturas possam causar problemas. Para limpar a lista, siga estas etapas:

  1. Execute esses comandos no prompt de comando do Desenvolvedor para VS (com privilégios de administrador).

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Exclua todos os arquivos .suo associados ao aplicativo Web.

Problema: estou tendo problemas de depuração de instantâneos e preciso habilitar mais log

Habilitar logs de agente

Para habilitar e desabilitar o log do agente, abra o Visual Studio e navegue até Ferramentas>Opções>Depurador>de Instantâneo Habilitar log do agente. Observe que se Excluir logs de agente antigos no início da sessão também estiver habilitado, cada anexação bem-sucedida do Visual Studio excluirá os logs de agente anteriores.

Você pode encontrar logs de agente nos seguintes locais:

  • Serviços de Aplicativo:
    • Navegue até o site kudu do seu Serviço de Aplicativo (ou seja, <seu serviço de aplicativo>.scm.azurewebsites.net) e navegue até Depurar Console.
    • Os logs do agente são armazenados no seguinte diretório: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS:
    • Entre na VM, os logs do agente são armazenados da seguinte maneira: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Navegue até o seguinte diretório: /tmp/diag/AgentLogs/*

Habilitar logs de criador de perfil/instrumentação

Você pode encontrar logs de instrumentação nos seguintes locais:

  • Serviços de Aplicativo:
    • O registro em log de erros é enviado automaticamente para D:\Home\LogFiles\eventlog.xml, os eventos são marcados com <Provider Name="Instrumentation Engine" /> ou "Pontos de interrupção de produção"
  • VM/VMSS:
    • Entre na VM e abra Visualizador de Eventos.
    • Abra a seguinte exibição: Aplicativo de Logs>do Windows.
    • Filtrar log atual por fonte de evento usando pontos de interrupção de produção ou mecanismo de instrumentação.
  • AKS
    • Registro em log do mecanismo de instrumentação em /tmp/diag/log.txt (definido MicrosoftInstrumentationEngine_FileLogPath no DockerFile)
    • Log do ProductionBreakpoint em /tmp/diag/shLog.txt

Problemas conhecidos

  • Atualmente, não há suporte para a depuração de instantâneos com vários clientes do Visual Studio no mesmo Serviço de Aplicativo.
  • As otimizações de IL roslyn não têm suporte total em projetos de ASP.NET Core. Para alguns projetos ASP.NET Core, talvez você não possa ver algumas variáveis ou usar algumas variáveis em instruções condicionais.
  • Variáveis especiais, como $FUNCTION ou $CALLER, não podem ser avaliadas em instruções condicionais ou pontos de log para projetos ASP.NET Core.
  • A depuração de instantâneos não funciona nos Serviços de Aplicativo que têm o cache local ativado.
  • Atualmente, não há suporte para aplicativos de API de depuração de instantâneos.

Atualização de extensão do site

A depuração de instantâneos e o Application Insights dependem de um ICorProfiler, que é carregado no processo do site e causa problemas de bloqueio de arquivos durante a atualização. Recomendamos esse processo para garantir que não haja tempo de inatividade no site de produção.

  • Crie um Slot de Implantação no Serviço de Aplicativo e implante seu site no Slot.
  • Troque o Slot pela produção do Cloud Explorer no Visual Studio ou do portal do Azure.
  • Pare o site do Slot. Leva alguns segundos para eliminar o processo dew3wp.exe do site de todas as instâncias.
  • Atualize a extensão do site do Slot do site do Kudu ou do portal do Azure (Serviço de Aplicativo Atualização de Extensões de Ferramentas > de Desenvolvimento de Folhas >>).
  • Inicie o site do Slot. Recomendamos visitar o site para aquecê-lo novamente.
  • Troque o Slot por produção.

Referências