Compartilhar via


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

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

  1. 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.

    Emulador do Azure na bandeja do sistema

  2. 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.

  3. 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)

  1. 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.

  2. Abra o menu de atalho do projeto do Azure e selecione Publicar.

  3. 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.

    Escolha a configuração Debug.

  4. 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.

  5. 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.

  6. Entre no portal do Azure e navegue até o Serviço de Nuvem (suporte estendido) que você deseja depurar.

  7. Escolha Funções e Instâncias no painel esquerdo e escolha a função que você está interessado em depurar remotamente.

  8. 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.

    Captura de tela mostrando o pop-up da instância de função com a opção Conectar.

  9. Na máquina virtual remota do Azure, instale as ferramentas de depuração remota do Visual Studio 2019, conforme descrito em depuração remota.

  10. 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.

  11. 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.

  12. 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).

    Captura de tela mostrando onde encontrar o endereço IP público para o serviço de nuvem.

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".

  1. Escolha Depurar>Anexar ao Processo (ou pressione Ctrl+Alt+P).

  2. Mantenha o tipo de conexão em Padrão.

  3. Insira o destino da conexão usando o endereço IP e a porta: {ipaddress}:4024.

  4. Defina Anexar a como Automático.

  5. Entre usando as mesmas credenciais que o usuário da área de trabalho remota.

  6. 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.

  7. 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)

  1. 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.

  2. Se seu alvo é o .NET 4.8, abra o arquivo ServiceConfiguration.Cloud.cscfg e verifique o valor do atributo osFamily no elemento ServiceConfiguration ao publicar Serviços de Nuvem (suporte estendido). Para um projeto .NET 4.8, use osFamily="7".

  3. Abra o menu de atalho do projeto do Azure e selecione Publicar.

  4. 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.

    Escolher a configuração de Depuração

  5. 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.

  6. 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.

  7. Entre no portal do Azure e navegue até o Serviço de Nuvem (suporte estendido) que você deseja depurar.

  8. Escolha Funções e Instâncias no painel esquerdo e escolha a função que você está interessado em depurar remotamente.

  9. 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.

    Captura de tela mostrando o pop-up da instância de função com a opção Conectar.

  10. Na máquina virtual remota do Azure, instale as ferramentas remotas do Visual Studio 2022, conforme descrito em Depuração remota.

  11. 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.

  12. 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.

    Captura de tela mostrando que msvsmon.exe está aguardando conexões.

  13. 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).

    Captura de tela mostrando onde encontrar o endereço IP público para o serviço de nuvem.

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".

  1. Escolha Depurar>Anexar ao Processo (ou pressione Ctrl+Alt+P).

  2. Mantenha o tipo de conexão em Padrão.

  3. Insira o destino da conexão usando o endereço IP e a porta: {ipaddress}:4026.

  4. Defina Anexar a como Automático.

  5. Entre usando as mesmas credenciais que o usuário da área de trabalho remota.

  6. 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.

  7. 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.

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

  1. Em Depurar, selecione Anexar ao Processo.

  2. Altere o Tipo de conexão para Serviços de Aplicativos do Microsoft Azure e selecione Localizar....

  3. Na caixa de diálogo que é aberta, selecione o nome da assinatura .

    Captura de tela da caixa de diálogo Selecionar Serviço de Aplicativo do Azure, mostrando uma lista de serviços de aplicativo a serem selecionados.

    Nota

    Você precisa estar conectado a uma conta da Microsoft com acesso à assinatura que contém o Serviço de Aplicativo do Azure.

  4. Filtre a exibição por Grupo de Recursos ou Tipo de Recurso ou pesquise por nome.

  5. 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.

    Captura de tela da janela Anexar ao Processo mostrando os processos em execução no Serviço de Aplicativo selecionado.

  6. 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

  1. No Gerenciador de Servidores, expanda o nó Máquinas Virtuais e selecione o nó da máquina virtual que deseja depurar.

  2. 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.

    Comando Habilitar depuração da máquina virtual

    Log de atividades do Azure

  3. 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.

    Comando Anexar depurador

  4. 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.

    Caixa de diálogo Selecionar tipo de código

  5. 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

  1. No Visual Studio, crie um novo aplicativo Web ASP.NET.

  2. 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.

    Criar caixa de diálogo do projeto ASP.NET Web

    Nota

    Você será solicitado a entrar em sua conta do Azure se ainda não estiver conectado.

  3. 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.

    Criar máquina virtual na caixa de diálogo do Azure

    O Azure cria a máquina virtual e, em seguida, provisiona e configura os endpoints, como Área de Trabalho Remota e Web Deploy.

  4. Depois que a máquina virtual estiver totalmente configurada, selecione o nó dela no Gerenciador de Servidores.

  5. 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.

    Comando Habilitar depuração da máquina virtual

    log de atividades do Azure

  6. 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

  7. Nas Opções de Publicação de Arquivo, selecione Remover arquivos adicionais no destino se o projeto já tiver sido implantado anteriormente.

  8. 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.

    Anexar comando do depurador

  9. 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.

    Caixa de diálogo Selecionar tipo de código

  10. 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.