Depurar um serviço dos Serviços de Nuvem do Azure (suporte estendido) no Visual Studio
O Visual Studio oferece opções diferentes para depurar os Serviços de Nuvem do Azure (suporte estendido) e máquinas virtuais.
Pré-requisitos
- Visual Studio (confira [Downloads do Visual Studio] (https://visualstudio.microsoft.com/downloads/?cid=learn-onpage-download-cta)) com a carga de trabalho de Desenvolvimento do Azure instalada e o Componente Individual modelos de projeto e item do .NET Framework instalados. Confira Modificar o Visual Studio.
- Uma conta do Azure. Se você não tem uma conta do Azure, ative seus benefícios do Azure para assinantes do Visual Studio ou inscreva-se para uma avaliação gratuita.
Depurar o serviço de nuvem no computador local
Você pode economizar tempo e dinheiro usando o Emulador de Computação do Azure para depurar seu serviço de nuvem em um computador local. Ao depurar um serviço localmente antes de implantá-lo, você pode melhorar a confiabilidade e o desempenho sem pagar pelo tempo de computação. No entanto, alguns erros podem ocorrer somente quando você executa um serviço de nuvem no próprio Azure. Você poderá depurar esses erros se habilitar a depuração remota ao publicar seu serviço e anexar o depurador a uma instância de função.
O emulador simula o serviço de Computação do Azure e é executado em seu ambiente local para que você possa testar e depurar seu serviço de nuvem antes de implantá-lo. O emulador manipula o ciclo de vida de suas instâncias de função e fornece acesso a recursos simulados, como armazenamento local. Quando você depura ou executa seu serviço no Visual Studio, ele inicia automaticamente o emulador como um aplicativo em segundo plano e, em seguida, implanta seu serviço no emulador. Você pode usar o emulador para exibir seu serviço quando ele é executado no ambiente local. Você pode executar a versão completa ou a versão expressa do emulador. Consulte usando o Emulator Express para executar e depurar um serviço de nuvem localmente.
Para depurar o serviço de nuvem no computador local
Na barra de menus, selecione Depurar>Iniciar Depuração para executar o projeto dos Serviços de Nuvem do Azure (suporte estendido). Como alternativa, você pode pressionar F5. Você verá uma mensagem informando que o Emulador de Computação está sendo iniciado. Quando o emulador é iniciado, o ícone da bandeja do sistema o confirma.
Exiba a interface do usuário do Emulador de Computação abrindo o menu de atalho do ícone do Azure na área de notificação e, em seguida, selecione Mostrar interface do usuário do Emulador de Computação.
O painel esquerdo da interface do usuário mostra os serviços que estão atualmente implantados no emulador de computação e as instâncias de função que cada serviço está executando. Você pode escolher o serviço ou as funções para exibir o ciclo de vida, o registro em log e as informações de diagnóstico no painel direito. Se você colocar o foco na margem superior de uma janela incluída, ele se expandirá para preencher o painel direito.
Percorra o aplicativo selecionando os comandos no menu Depurar e definindo pontos de interrupção no código. Conforme você percorre o aplicativo no depurador, os painéis são atualizados com o status atual do aplicativo. Quando você interrompe a depuração, a implantação do aplicativo é excluída. Se o aplicativo incluir uma função Web e você definir a propriedade de ação de inicialização para iniciar o navegador da Web, o Visual Studio iniciará seu aplicativo Web no navegador. Se você alterar o número de instâncias de uma função na configuração de serviço, deverá interromper o serviço de nuvem e reiniciar a depuração para que possa depurar essas novas instâncias da função.
Nota
Quando você interrompe a execução ou a depuração do serviço, o emulador de computação local e o emulador de armazenamento não são interrompidos. Você deve parar as notificações explicitamente na área de notificação.
Depurar um serviço de nuvem no Azure
Se você habilitar a depuração remota para um serviço de nuvem usando o procedimento nesta seção, ele não exibirá desempenho degradado nem incorrerá em encargos adicionais. Não use a depuração remota em um serviço de produção, pois os clientes que usam o serviço podem ser afetados negativamente.
Para habilitar a depuração remota para um serviço de nuvem (suporte estendido)
Adicione um ponto de extremidade ao ServiceDefinition.csdef para a porta msvsmon padrão. Para o Visual Studio 2019, é 4024.
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4024" localPort="4024" /> </Endpoints>
Nota
Outras versões do Visual Studio têm portas diferentes de Atribuições de Porta do Depurador Remoto.
Abra o menu de atalho do projeto do Azure e selecione Publicar.
Selecione o ambiente de Preparo e a configuração de Depuração.
Essa é apenas uma diretriz. Você pode optar por executar seus ambientes de teste em um ambiente de produção. No entanto, você poderá afetar negativamente os usuários ao habilitar a depuração remota no ambiente de Produção. Você pode escolher a configuração de Release, mas a configuração de Debug torna a depuração mais fácil.
Siga as etapas usuais descritas em Serviços de Nuvem (suporte estendido), mas selecione a caixa de seleção Habilitar Área de Trabalho Remota para todas as funções.
Você será solicitado a criar um nome de usuário e uma senha para o usuário da área de trabalho remota, que você precisará mais tarde para entrar nessa máquina virtual.
Avance para a próxima tela, examine suas configurações e, quando estiver pronto, clique em Publicar e aguarde a conclusão da implantação.
Entre no portal do Azure e navegue até o Serviço de Nuvem (suporte estendido) que você deseja depurar.
Escolha Funções e Instâncias no painel esquerdo e escolha a função que você está interessado em depurar remotamente.
Clique em Conectar no pop-out Instância de Função à direita e escolha o botão Conectar para baixar um arquivo de área de trabalho remota que permitirá que você entre na máquina virtual. Entre usando as credenciais que você criou quando habilitou a área de trabalho remota em uma etapa anterior.
Na máquina virtual remota do Azure, instale as ferramentas de depuração remota do Visual Studio 2019, conforme descrito em depuração remota.
Na área de trabalho na máquina virtual, execute o comando D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe. Certifique-se de executar como Administrador.
Aceite solicitações para permitir o acesso por meio do firewall. Você deverá ver uma mensagem indicando que msvsmon.exe começou a escutar conexões.
No portal do Azure, abra o grupo de recursos e obtenha o Endereço IP público para o Serviço de Nuvem (suporte estendido).
Para anexar o depurador a um serviço de nuvem (suporte estendido) no Azure
Nota
Sempre que possível, depure com a configuração de Depuração escolhida no processo Publicar, mas se você estiver depurando uma configuração de Versão, no Visual Studio, use Ctrl+Q para pesquisar "Apenas Meu Código" e desmarque Habilitar Apenas Meu Código em Ferramentas>Opções>Depurador>Geral. As compilações de release são otimizadas e, portanto, não são consideradas "Meu código".
Escolha Depurar>Anexar ao Processo (ou pressione Ctrl+Alt+P).
Mantenha o tipo de conexão em Padrão.
Insira o destino da conexão usando o endereço IP e a porta:
{ipaddress}:4024
.Defina Anexar a como Automático.
Entre usando as mesmas credenciais que o usuário da área de trabalho remota.
Selecione Mostrar processo para todos os usuários. Se você estiver depurando uma função de trabalho, anexe WaWorkerHost.exe; se estiver depurando uma função Web, anexe ao processo w3wp.exe; para uma função de API Web, é WaIISHost.exe.
Defina pontos de interrupção (navegue até a linha e pressione F9), acesse a URL pública do site e reproduza o cenário para depurar.
Para habilitar a depuração remota para um serviço de nuvem (suporte estendido)
Adicione um ponto de extremidade ao ServiceDefinition.csdef para a porta msvsmon padrão. Para o Visual Studio 2022, é 4026; para Visual Studio 2019, é 4024.
<Endpoints> <InputEndpoint name="RemoteDebug" protocol="tcp" port="4026" localPort="4026" /> </Endpoints>
Nota
Outras versões do Visual Studio têm portas diferentes de Atribuições de Porta do Depurador Remoto.
Se seu alvo é o .NET 4.8, abra o arquivo ServiceConfiguration.Cloud.cscfg e verifique o valor do atributo
osFamily
no elementoServiceConfiguration
ao publicar Serviços de Nuvem (suporte estendido). Para um projeto .NET 4.8, useosFamily="7"
.Abra o menu de atalho do projeto do Azure e selecione Publicar.
Selecione o ambiente de Preparo e a configuração de Depuração.
Essa é apenas uma diretriz. Você pode optar por executar seus ambientes de teste em um ambiente de produção. No entanto, ao habilitar a depuração remota no ambiente de produção, você poderá afetar negativamente os usuários. É possível escolher a configuração de Versão, mas a configuração de Depuração facilita a depuração.
Siga as etapas usuais descritas em Serviços de Nuvem (suporte estendido), mas selecione a caixa de seleção Habilitar Área de Trabalho Remota para todas as funções.
Você será solicitado a criar um nome de usuário e uma senha para o usuário da área de trabalho remota, que você precisará mais tarde para entrar nessa máquina virtual.
Avance para a próxima tela, examine suas configurações e, quando estiver pronto, clique em Publicar e aguarde a conclusão da implantação.
Entre no portal do Azure e navegue até o Serviço de Nuvem (suporte estendido) que você deseja depurar.
Escolha Funções e Instâncias no painel esquerdo e escolha a função que você está interessado em depurar remotamente.
Clique em Conectar no pop-out Instância de Função à direita e escolha o botão Conectar para baixar um arquivo de área de trabalho remota que permitirá que você entre na máquina virtual. Entre usando as credenciais que você criou quando habilitou a área de trabalho remota em uma etapa anterior.
Na máquina virtual remota do Azure, instale as ferramentas remotas do Visual Studio 2022, conforme descrito em Depuração remota.
Na área de trabalho na máquina virtual, execute o comando msvsmon.exe na pasta de instalação do Visual Studio em
Common7\IDE\Remote Debugger\x64
. Certifique-se de executar como Administrador.Aceite as solicitações para permitir o acesso por meio do firewall. Você deverá ver uma mensagem indicando que msvsmon.exe começou a escutar conexões.
No portal do Azure, abra o grupo de recursos e obtenha o Endereço IP público para o Serviço de Nuvem (suporte estendido).
Para anexar o depurador a um serviço de nuvem (suporte estendido) no Azure
Nota
Sempre que possível, depure com a configuração de Depuração escolhida no processo Publicar, mas se você estiver depurando uma configuração de Versão, no Visual Studio, use Ctrl+Q para pesquisar "Apenas Meu Código" e desmarque Habilitar Apenas Meu Código em Ferramentas>Opções>Depurador>Geral. As versões de lançamento são otimizadas e, portanto, não são consideradas "Meu código".
Escolha Depurar>Anexar ao Processo (ou pressione Ctrl+Alt+P).
Mantenha o tipo de conexão em Padrão.
Insira o destino da conexão usando o endereço IP e a porta:
{ipaddress}:4026
.Defina Anexar a como Automático.
Entre usando as mesmas credenciais que o usuário da área de trabalho remota.
Selecione Mostrar processo para todos os usuários. Se você estiver depurando uma função de trabalho, anexe WaWorkerHost.exe; se estiver depurando uma função Web, anexe ao processo w3wp.exe; para uma função de API Web, é WaIISHost.exe.
Defina pontos de interrupção (navegue até a linha e pressione F9), acesse a URL pública do site e reproduza o cenário para depurar.
Limitações da depuração remota no Azure
A depuração remota apresenta as seguintes limitações:
Com a depuração remota habilitada, você não pode publicar um serviço de nuvem no qual qualquer função tenha mais de 25 instâncias.
O depurador usa as portas 30400 a 30424, 31400 a 31424 e 32400 a 32424. Se você tentar usar qualquer uma dessas portas, não poderá publicar seu serviço e uma das seguintes mensagens de erro aparecerá no log de atividades do Azure:
- Erro ao validar o arquivo .cscfg contra o arquivo .csdef.
O intervalo de portas reservado 'range' para o ponto de extremidade
Microsoft.WindowsAzure.PlugIns.RemoteDebugger.Connector
da função 'role' é sobreposto por uma porta ou um intervalo já definido. - Falha na alocação. Tente novamente mais tarde, tente reduzir o tamanho da VM ou o número de instâncias de função ou tente implantar em uma região diferente.
- Erro ao validar o arquivo .cscfg contra o arquivo .csdef.
O intervalo de portas reservado 'range' para o ponto de extremidade
Depurando o Serviço de Aplicativo do Azure
Você pode depurar programas executados no Serviço de Aplicativo do Azure usando a caixa de diálogo Anexar ao Processo no Visual Studio.
Nota
Isso só está disponível para o Serviço de Aplicativo do Azure a partir do Visual Studio 2022 17.1.
Para depurar uma Serviço de Aplicativo do Azure do Windows
Em Depurar, selecione Anexar ao Processo.
Altere o Tipo de conexão para Serviços de Aplicativos do Microsoft Azure e selecione Localizar....
Na caixa de diálogo que é aberta, selecione o nome da assinatura .
Nota
Você precisa estar conectado a uma conta da Microsoft com acesso à assinatura que contém o Serviço de Aplicativo do Azure.
Filtre a exibição por Grupo de Recursos ou Tipo de Recurso ou pesquise por nome.
Em seguida, selecione o Serviço de Aplicativo que você deseja depurar e selecione Ok.
Isso permite a depuração remota em seu Serviço de Aplicativo e mostra uma lista de processos disponíveis a serem anexados.
Selecione o processo ao qual você deseja anexar e escolha Anexar para iniciar a depuração.
Depurando Máquinas Virtuais do Azure
Você pode depurar programas executados em Máquinas Virtuais do Azure usando o Gerenciador de Servidores no Visual Studio. Quando você habilita a depuração remota em uma máquina virtual do Azure, o Azure instala a extensão de depuração remota na máquina virtual. Em seguida, você poderá anexá-la a processos na máquina virtual e depurar normalmente.
Nota
As máquina virtuais criadas por meio da pilha do Azure Resource Manager podem ser depuradas remotamente usando o Cloud Explorer no Visual Studio 2019. Para obter mais informações, consulte Gerenciamento de Recursos do Azure com o Cloud Explorer.
Para depurar uma máquina virtual do Azure
No Gerenciador de Servidores, expanda o nó Máquinas Virtuais e selecione o nó da máquina virtual que deseja depurar.
Abra o menu de contexto e selecione Habilitar Depuração. Quando perguntado se você tem certeza de que deseja habilitar a depuração na máquina virtual, selecione Sim.
O Azure instala a extensão de depuração remota na máquina virtual para habilitar a depuração.
Depois que a extensão de depuração remota terminar de instalar, abra o menu de contexto da máquina virtual e selecione Anexar Depurador...
O Azure obtém uma lista dos processos na máquina virtual e os mostra na caixa de diálogo Anexar ao Processo.
Na caixa de diálogo Anexar ao Processo, selecione Selecionar para limitar a lista de resultados para mostrar apenas os tipos de código que você deseja depurar. Você pode depurar código gerenciado de 32 bits ou 64 bits, código nativo ou ambos.
Escolha os processos que deseja depurar na máquina virtual e selecione Anexar. Por exemplo, você pode escolher o processo de w3wp.exe se quiser depurar um aplicativo Web na máquina virtual. Confira Depurar um ou mais processos no Visual Studio e Arquitetura de função do Azure para obter mais informações.
Criar um projeto da Web e uma máquina virtual para depuração
Antes de publicar seu projeto do Azure, você pode achar útil testá-lo em um ambiente independente que dá suporte a cenários de depuração e teste e onde você pode instalar programas de teste e monitoramento. Uma maneira de executar esses testes é depurar remotamente seu aplicativo em uma máquina virtual.
Os projetos de ASP.NET do Visual Studio oferecem uma opção para criar uma máquina virtual útil que você pode usar para testes de aplicativo. A máquina virtual inclui endpoints comumente necessários, como PowerShell, Área de Trabalho Remota e WebDeploy.
Para criar um projeto da Web e uma máquina virtual para depuração
No Visual Studio, crie um novo aplicativo Web ASP.NET.
Na caixa de diálogo Novo Projeto do ASP.NET, na seção do Azure, selecione Máquina Virtual na caixa de listagem suspensa. Deixe a caixa de seleção Criar recursos remotos selecionada. Selecione OK para continuar.
A caixa de diálogo Criar máquina virtual no Azure é exibida.
Nota
Você será solicitado a entrar em sua conta do Azure se ainda não estiver conectado.
Escolha as várias configurações da máquina virtual e selecione OK. Consulte Máquinas Virtuais para obter mais informações.
O nome inserido para o nome DNS será o nome da máquina virtual.
O Azure cria a máquina virtual e, em seguida, provisiona e configura os endpoints, como Área de Trabalho Remota e Web Deploy.
Depois que a máquina virtual estiver totalmente configurada, selecione o nó dela no Gerenciador de Servidores.
Abra o menu de contexto e selecione Habilitar Depuração. Quando perguntado se você tem certeza de que deseja habilitar a depuração na máquina virtual, selecione Sim.
O Azure instala a extensão de depuração remota na máquina virtual para habilitar a depuração.
Publique seu projeto conforme descrito em Como implantar um projeto Web usando One-Click Publicar no Visual Studio. Como você deseja depurar na máquina virtual, na página Configurações do assistente Publicar Web, selecione Depurar como a configuração. Isso garante que os símbolos de código fiquem disponíveis durante a depuração.
configurações de publicação
Nas Opções de Publicação de Arquivo, selecione Remover arquivos adicionais no destino se o projeto já tiver sido implantado anteriormente.
Após a publicação do projeto, no menu de contexto da máquina virtual no Gerenciador de Servidores, selecione Anexar Depurador...
O Azure obtém uma lista dos processos na máquina virtual e os mostra na caixa de diálogo Anexar ao Processo.
Na caixa de diálogo Anexar ao Processo, selecione Selecionar para limitar a lista de resultados para mostrar apenas os tipos de código que você deseja depurar. Você pode depurar código gerenciado de 32 bits ou 64 bits, código nativo ou ambos.
Escolha os processos que deseja depurar na máquina virtual e selecione Anexar. Por exemplo, você pode escolher o processo de w3wp.exe se quiser depurar um aplicativo Web na máquina virtual. Confira Depurar um o mais processos no Visual Studio para obter mais informações.
Conteúdo relacionado
Use o Diagnóstico do Azure para registrar informações detalhadas do código em execução nas funções, no Azure. Confira Coleta de dados de log usando o Diagnóstico do Azure.
Para outros cenários de depuração remota, consulte Depuração remota.