Solução de problemas e problemas conhecidos da depuração de instantâneos no Visual Studio
Aplica-se a: Visual Studio
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 resolverem seu problema, pesquise o problema na Comunidade de Desenvolvedores ou relate um novo problema escolhendo Ajudar a>Enviar Comentários>Relatar um Problema no Visual Studio.
Problema: "Anexar Depurador de Instantâneos" encontra um erro de código de status HTTP
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. Tente as soluções propostas e, se o problema 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 é verificar se o recurso está disponível na caixa de diálogo de Depurar>Anexar Depurador de Instantâneos...>Recurso do Azure>Selecionar Existente ou no Cloud Explorer.
- Se esse erro continuar persistindo, 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 tomada quando a solicitação não é autenticada está definida como Permitir solicitações anônimas (sem ação) no portal do Azure e forneça uma 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 protege efetivamente seu domínio de aplicativo semelhante a Logon com [IdentityProvider]. A segunda rota expõe o ponto de extremidade SnapshotDebugger AgentLaunch fora da autenticação, que executará a ação predefinida de iniciar o agente de diagnóstico SnapshotDebugger somente se a extensão de site pré-instalada SnapshotDebugger estiver habilitada para o serviço de aplicativo. Para obter mais informações sobre a configuração 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 RBAC (Role-Based Controle de Acesso) necessárias para o recurso. Para AppService, verifique se você tem permissões para consultar o plano de Serviço de Aplicativo que hospeda seu aplicativo.
- Verifique se o carimbo de data/hora do computador cliente está correto e atualizado. Servidores com carimbos de data/hora desativados por mais de 15 minutos do carimbo de data/hora da solicitação geralmente produzem esse erro.
- Se esse erro continuar persistindo, 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 o aplicativo Web personalizado em execução corretamente não retorna um código de status 404 quando acessado em https:// resource.azurewebsites.net>.<
- Se esse erro continuar persistindo, 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 consegue responder ao tipo definido no cabeçalho Accept da solicitação.
Execute estas etapas:
- Verifique se o 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 rotear solicitações para instâncias específicas que podem produzir esse erro de forma intermitente.
- Se esse erro continuar persistindo, use um dos canais de comentários descritos no início deste artigo.
(409) Conflito
O erro 409 - Conflito indica que a solicitação está em conflito com o estado atual do servidor.
Esse é um problema conhecido que ocorre quando um usuário tenta anexar o Depurador de Instantâneos em um AppService que habilitou o ApplicationInsights. O ApplicationInsights define o AppSettings com um uso de maiúsculas e minúsculas diferente do Visual Studio, causando esse problema.
Resolvemos isso no Visual Studio 2019.
Siga estas etapas:
- Se esse erro continuar persistindo, 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á inativo ou que o servidor não pode lidar com a solicitação. O Depurador de Instantâneos só funciona 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 inválido
O erro 502 - Bad Gateway indica um problema de rede do lado do servidor e pode ser temporário.
Siga estas etapas:
- Tente aguardar alguns minutos antes de anexar o Depurador de Instantâneos novamente.
- Se esse erro continuar persistindo, 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 normal, o snappoint não está ativado.
Execute estas etapas:
- Certifique-se de usar 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âneo 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 automaticamente e usar os símbolos em sua implantação.
Problema: os símbolos não são carregados quando abro um snapshot
Se você vir a janela a seguir, os símbolos não foram carregados.
Execute estas etapas:
Selecione Alterar configurações de símbolo... na página.
Nas configurações Depuração > Símbolos, adicione um diretório de cache de símbolos.
Reinicie a depuração de instantâneos depois que o caminho de símbolos for 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 Azure Pipelines ou Kudu etc.) publica seus arquivos de símbolo junto com o Serviço de Aplicativo. A definição do diretório de cache de símbolos permite que o Visual Studio use esses símbolos.
Como alternativa, se sua organização usa um servidor de símbolos ou deixa os 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 do Depurador de Instantâneos está instalado. Abra o Instalador do Visual Studio e marque o componente Depurador de Instantâneos na carga de trabalho do Azure.
Para o Visual Studio 2019 ou versões posteriores, verifique se há suporte para seu aplicativo:
- Serviços de Aplicativos do Azure – Aplicativos ASP.NET em execução no .NET Framework 4.6.1 ou posterior.
- Serviços de Aplicativos do Azure – Aplicativos ASP.NET Core em execução no .NET Core 2.0 ou posterior no Windows.
- Máquinas Virtuais do Azure (e conjunto de dimensionamento de máquinas virtuais) – aplicativos ASP.NET em execução no .NET Framework 4.6.1 ou posterior.
- Máquinas Virtuais do Azure (e conjunto de dimensionamento de máquinas virtuais) – aplicativos ASP.NET Core em execução no .NET Core 2.0 ou posterior no Windows.
- Serviços de Kubernetes do Azure – Aplicativos ASP.NET Core em execução no .NET Core 2.2 ou posterior no Debian 9.
- Serviços de Kubernetes do Azure – Aplicativos ASP.NET Core em execução no .NET Core 2.2 ou posterior no Alpine 3.8.
- Serviços de Kubernetes do Azure – Aplicativos ASP.NET Core em execução no .NET Core 2.2 ou posterior no Ubuntu 18.04.
Problema: vejo apenas instantâneos limitados nas Ferramentas de Diagnóstico
Siga estas etapas:
- Instantâneos ocupam pouca memória, mas têm um custo de confirmação. Se o Depurador de Instantâneos detectar que o servidor está sob carga pesada de memória, ele não fará a captura de instantâneos. Para excluir instantâneos já capturados, interrompa a sessão do Depurador de Instantâneos e tente 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 exige uma versão mais recente da extensão de site do Depurador de Instantâneos no 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:
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, receberá o seguinte erro:
Para corrigir esse problema, exclua as seguintes configurações de aplicativo no portal do Azure e anexe o Depurador de Instantâneos novamente:
INSTRUMENTATIONENGINE_EXTENSION_VERSION
SNAPSHOTDEBUGGER_EXTENSION_VERSION
Problema: estou anexando ao recurso ou à conta de armazenamento do Azure errada/antiga
Siga estas etapas:
As entradas "Recurso do Azure" e "Conta de armazenamento" usam nomes de recurso como chaves, de modo que ações como migrar um recurso para assinaturas diferentes podem causar problemas. Para limpar a lista, siga estas etapas:
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
Exclua todos os arquivos .suo associados ao aplicativo Web.
Problema: estou tendo problemas com a depuração de instantâneos e preciso habilitar mais registros
Habilitar logs do agente
Para habilitar e desabilitar o log do agente, abra o Visual Studio e navegue até Ferramentas, Opções>, Depurador de Instantâneos>, Habilitar o log do agente>. Observação se Excluir logs antigos do agente no início da sessão também estiver habilitado, cada anexação bem-sucedida do Visual Studio excluirá os logs anteriores do agente.
Você pode encontrar logs de agentes nos seguintes locais:
- Serviços de Aplicativos:
- Navegue até o site Kudu do Serviço de Aplicativo (ou seja, <yourappservice.>scm.azurewebsites.net) e navegue até Console de Depuração.
- Os logs do agente são armazenados no seguinte diretório: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
- VM/VMSS:
- Entre em sua 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 do Profiler/Instrumentação
Você pode encontrar logs de instrumentação nos seguintes locais:
- Serviços de Aplicativos:
- O 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"
- O log de erros é enviado automaticamente para D:\Home\LogFiles\eventlog.xml, os eventos são marcados com
- VM/VMSS:
- Entre em sua VM e abra o Visualizador de Eventos.
- Abra a exibição a seguir: Logs do Windows>Aplicativo.
- Filtrar Log Atual por Origem do Evento usando Pontos de Interrupção de Produção ou Mecanismo de Instrumentação.
- AKS
- Log do mecanismo de instrumentação em /tmp/diag/log.txt (definido
MicrosoftInstrumentationEngine_FileLogPath
no DockerFile) - Registro em log do ProductionBreakpoint em /tmp/diag/shLog.txt
- Log do mecanismo de instrumentação em /tmp/diag/log.txt (definido
Problemas conhecidos
- No momento, 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 do Roslyn IL não são totalmente compatíveis com ASP.NET projetos principais. Para alguns projetos ASP.NET Core, talvez não seja possível 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 logpoints para ASP.NET projetos principais. - A depuração de instantâneo não funciona nos Serviços de Aplicativos que têm o Cache Local ativado.
- No momento, não há suporte para aplicativos de API de depuração de instantâneos.
Atualização de extensão de 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 arquivo durante a atualização. Recomendamos esse processo para garantir que não haja tempo de inatividade em seu local de produção.
- Crie um Slot de implantação dentro de seu Serviço de Aplicativo e implante seu site no slot.
- Troque o Slot com a produção do Cloud Explorer no Visual Studio ou do portal do Azure.
- Interrompa o site do Slot. Leva alguns segundos para encerrar o site w3wp.exe processo de todas as instâncias.
- Atualize a extensão de site do Slot no site do Kudu ou no portal do Azure (Folha de Serviço de Aplicativo > Ferramentas de Desenvolvimento > Extensões > Atualização).
- Inicie o site do Slot. Recomendamos que você visite o site para aquecê-lo novamente.
- Troque o Slot com a produção.
Referências
- Depurando no Visual Studio
- Depurar aplicativos ASP.NET dinâmicos usando o Depurador de Instantâneos
- Depurar Máquinas Virtuais ASP.NET Azure\Conjuntos de Dimensionamento de VMs dinâmicos usando o Depurador de Instantâneos
- Depurar Kubernetes ASP.NET dinâmicos usando o Depurador de Instantâneos
- Perguntas frequentes sobre depuração de instantâneo