Depurar um serviço de nuvem do Azure no Visual Studio

O Visual Studio oferece a você opções diferentes de depuração das máquinas virtuais e dos Serviços de Nuvem do Azure

Pré-requisitos

Depurar o serviço de nuvem no computador local

Você pode economizar tempo e dinheiro usando o emulador de computação para depurar o serviço de nuvem em um computador local. Ao depurar um serviço localmente antes de implantá-lo, você pode aprimorar 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 Azure em si. Você poderá depurar esses erros se habilitar a depuração remota quando publica o serviço e depois anexar o depurador a uma instância de função.

O emulador simula o serviço de computação do Azure e o executa no ambiente local para que você possa testar e depurar o serviço de nuvem antes de implantá-lo. O emulador trata o ciclo de vida das 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 o serviço para o emulador. É possível usar o emulador para exibir o 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 Expresso 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, escolha Depurar>Iniciar depuração para executar o projeto de serviço de nuvem do Azure. Como alternativa, você pode pressionar F5. Será exibida 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 selecione Mostrar Interface do Usuário do Emulador de Computação.

    O painel esquerdo da IU usuário mostra os serviços que estão implantados no momento no emulador de computação e as instâncias de função que cada serviço está executando. É possível 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, ela se expandirá, preenchendo o painel direito.

  3. Percorra o aplicativo selecionando os comandos no menu Depurar e definindo pontos de interrupção no código. À medida que 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 seu aplicativo incluir uma função Web e você tiver definido a propriedade de ação de Inicialização para iniciar o navegador da Web, o Visual Studio iniciará o aplicativo Web no navegador. Se você alterar o número de instâncias de uma função na configuração do serviço, deverá parar o serviço de nuvem e reiniciar a depuração de modo que você pode depurar essas novas instâncias da função.

    Observação

    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. Também é preciso pará-los explicitamente na área de notificação.

Depurar um perfil de serviço de nuvem no Azure

Os procedimentos de depuração dependem se você está usando Serviços de Nuvem (suporte estendido) ou o modelo clássico de serviços de nuvem. Para Serviços de Nuvem (suporte estendido), continue lendo. Para o modelo clássico, consulte Depurar um serviço de nuvem no Azure (modelo clássico).

Se você habilitar a depuração remota para um serviço de nuvem usando o procedimento descrito nesta seção, ela não mostrará degradação de desempenho nem incorrerá em cobranças 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 prejudicados.

Observação

Ao publicar um serviço de nuvem no Visual Studio, você pode habilitar o IntelliTrace para qualquer função nesse serviço que se destine ao .NET Framework 4 ou .NET Framework 4.x. Usando o IntelliTrace, você pode examinar os eventos que ocorreram em uma instância de função no passado e reproduzir o contexto no tempo em que ocorreu. Consulte Depurando um serviço de nuvem publicado com o IntelliTrace e o Visual Studio e Usando o IntelliTrace.

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>
    

    Observação

    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.

    Isso é apenas uma diretriz. Você pode optar por executar 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. É 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

  4. Siga as etapas usuais descritas em Serviços de Nuvem (suporte estendido), mas marque 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-out da instância de função com a opção Conectar

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

  10. Na área de trabalho na máquina virtual, execute o comando D:\Arquivos de Programas (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Remote Debugger\x64\msvsmon.exe. Não se esqueça de executar como Administrador.

  11. Aceite prompts 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 pegue o endereço IP público para o Serviço de Nuvem (suporte estendido).

    Screenshot showing where to find the public IP address for the cloud service.

Para anexar o depurador a um serviço de nuvem (suporte estendido) no Azure

Observação

Sempre que possível, você deve depurar 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. Os builds de versão são otimizados e, portanto, não são considerados "Meu código".

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

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

  3. Insira o destino de 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 a WaWorkerHost.exe; se você estiver depurando uma função Web, anexe ao processo dew3wp.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 depuração.

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, isso é 4026; para Visual Studio 2019, é 4024.

    <Endpoints>
       <InputEndpoint name="RemoteDebug" protocol="tcp" port="4026" localPort="4026" />
    </Endpoints>
    

    Observação

    Outras versões do Visual Studio têm portas diferentes de Atribuições de Porta do Depurador Remoto.

  2. Se você estiver direcionando 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 do .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.

    Isso é apenas uma diretriz. Você pode optar por executar 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. É 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 marque 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-out 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 D:\Program Files\Microsoft Visual Studio 17.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe. Não se esqueça de executar como Administrador.

  12. Aceite prompts 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á escutando conexões.

  13. No Portal do Azure, abra o grupo de recursos e pegue o endereço IP público para o Serviço de Nuvem (suporte estendido).

    Screenshot showing where to find the public IP address for the cloud service.

Para anexar o depurador a um serviço de nuvem (suporte estendido) no Azure

Observação

Sempre que possível, você deve depurar 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. Os builds de versão são otimizados e, portanto, não são considerados "Meu código".

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

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

  3. Insira o destino de 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 a WaWorkerHost.exe; se você estiver depurando uma função Web, anexe ao processo dew3wp.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 depuração.

Depurar um perfil de serviço de nuvem no Azure (modelo clássico)

Para depurar um serviço de nuvem em um computador remoto, você deve habilitar essa funcionalidade explicitamente quando implanta o serviço de nuvem para que os serviços exigidos (msvsmon.exe, por exemplo) sejam instalados nas máquinas virtuais que executam suas instâncias de função. Se você não habilitou a depuração remota quando publicou o serviço, será preciso publicar novamente o serviço com a depuração remota habilitada.

Se você habilitar a depuração remota para um serviço de nuvem, ela não mostrará degradação de desempenho nem incorrerá em cobranças 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 prejudicados.

Observação

Ao publicar um serviço de nuvem no Visual Studio, você pode habilitar o IntelliTrace para qualquer função nesse serviço que se destine ao .NET Framework 4 ou .NET Framework 4.5. Usando o IntelliTrace, você pode examinar os eventos que ocorreram em uma instância de função no passado e reproduzir o contexto no tempo em que ocorreu. Consulte Depurando um serviço de nuvem publicado com o IntelliTrace e o Visual Studio e Usando o IntelliTrace.

Para habilitar a depuração remota para um serviço de nuvem (modelo clássico)

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

  2. Selecione o ambiente de Preparo e a configuração de Depuração.

    Isso é apenas uma diretriz. Você pode optar por executar 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. É 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

  3. Siga as etapas comuns, mas marque a caixa de seleção Habilitar depurador remoto para todas as funções na guia Configurações Avançadas.

    Configuração de Depuração

Para anexar o depurador a um serviço de nuvem no Azure (modelo clássico)

  1. No Gerenciador de Servidores, expanda o nó do seu serviço de nuvem.

  2. Abra o menu de atalho da função ou da instância de função à qual você deseja anexar e selecione Anexar Depurador.

    Se você depurar uma função, o depurador do Visual Studio anexará a cada instância dessa função. O depurador será interrompido em um ponto de interrupção da primeira instância de função que executa essa linha de código e atende a todas as condições desse ponto de interrupção. Se você depurar uma instância, o depurador será anexado apenas a essa instância e interrompido em um ponto de interrupção somente quando essa instância específica executar essa linha de código e atender às condições do ponto de interrupção.

    Anexar Depurador

  3. Depois que o depurador é anexado a uma instância, a depuração ocorre como de costume. O depurador é anexado automaticamente ao processo de host apropriado para sua função. Dependo da função, o depurador será anexado a w3wp.exe, a WaWorkerHost.exe ou a WaIISHost.exe. Para verificar o processo ao qual o depurador é anexado, expanda o nó da instância no Gerenciador de Servidores. Consulte Arquitetura de função do Azure para obter mais informações sobre os processos do Azure.

    Caixa de diálogo Selecionar Tipo de Código

  4. Para idenficar o processo ao qual o depurador está anexado, na barra de menus, selecione caixa de ferramentas Depurador>Windows>Processos e abra a caixa de diálogo Processes. (Teclado: Ctrl+Alt+Z) Para desanexar um processo específico, abra o menu de atalho correspondente e, em seguida, selecione Desanexar Processo. Se preferir, localize o nó da instância no Gerenciador de Servidores, encontre o processo, abra o respectivo menu de atalho e clique em Desanexar Processo.

    Processos de depuração

Aviso

Evite paradas longas em pontos de interrupção durante a depuração remota. O Azure trata um processo que foi interrompido por um pouco mais de alguns minutos como sem resposta e para de enviar tráfego para essa instância. Se você parar por muito tempo, o msvsmon.exe será desanexado do processo.

Para desanexar o depurador de todos os processos em sua instância ou função, abra o menu de atalho da função ou instância que você está depurando e selecione Desanexar Depurador.

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 algumas delas, não será possível publicar o serviço e uma das seguintes mensagens de erro aparecerá no log de atividades do Azure:

    • Erro ao validar o arquivo .cscfg em relação ao arquivo .csdef. O intervalo de portas reservado 'intervalo' para o ponto de extremidade Microsoft.WindowsAzure.PlugIns.RemoteDebugger.Connector da função 'função' se sobrepõe a uma porta ou intervalo já definido.
    • Falha na alocação. Tente novamente mais tarde, reduzindo o tamanho da VM ou o número de instâncias de função, ou tente implantar em uma região diferente.

Depuraçã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.

Observação

IIsso 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 Microsoft Azure App Services e selecione Localizar....

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

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

    Observação

    Você precisa estar conectado a uma conta Microsoft com acesso à assinatura que contém sua 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 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 que são 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 da depuração remota na máquina virtual. Em seguida, você poderá anexá-la a processos na máquina virtual e depurar normalmente.

Observação

As Máquinas Virtuais criadas por meio da pilha do Gerenciador de Recursos do Azure podem ser remotamente depuradas usando o Cloud Explorer no Visual Studio 2019. Para saber mais, consulte Gerenciando 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 da depuração remota na máquina virtual para habilitar a depuração.

    Comando Depuração habilitada para máquina virtual

    Log de Atividades do Azure

  3. Depois que a extensão de depuração remota concluir a instalação, 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, escolha Selecionar a fim de limitar a lista de resultados para mostrar apenas os tipos de código que você deseja depurar. Depure um código gerenciado de 32 ou 64 bits, um código nativo ou ambos.

    Caixa de diálogo Selecionar Tipo de Código

  5. Selecione os processos que você deseja depurar na máquina virtual e selecione Anexar. Por exemplo, você pode escolher o processo w3wp.exe se quiser depurar um aplicativo Web na máquina virtual. Consulte 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, talvez seja útil testá-lo em um ambiente independente que ofereça suporte a cenários de teste e depuração, e onde seja possível instalar programas de teste e monitoramento. Uma maneira de executar esses testes é depurar o aplicativo remotamente em uma máquina virtual.

Os projetos ASP.NET do Visual Studio oferecem uma opção para criar uma máquina virtual útil que você pode usar para teste de aplicativos. A máquina virtual inclui pontos de extremidade que geralmente são necessários, como o PowerShell, a Área de Trabalho Remota e a Implantação da Web.

Para criar um projeto da Web e uma máquina virtual para depuração

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

  2. Na caixa de diálogo Novo Projeto do ASP.NET, na seção Azure, selecione Máquina Virtual na caixa de listagem suspensa. Deixe a caixa de seleção Criar recursos remotos marcada. Selecione OK para continuar.

    A caixa de diálogo Criar máquina virtual no Azure é exibida.

    Caixa de diálogo Criar projeto da Web do ASP.NET

    Observação

    será solicitado que você entre em sua conta do Azure, caso ainda não tenha entrado.

  3. Escolha as diversas configurações para a máquina virtual e escolha OK. Consulte Máquinas Virtuais para obter mais informações.

    Insira o nome DNS que será o nome da máquina virtual.

    Caixa de diálogo Criar máquina virtual no Azure

    O Azure cria a máquina virtual e provisiona e configura os pontos de extremidade, como Área de Trabalho Remota e Implantação da Web.

  4. Depois que a máquina virtual estiver totalmente configurada, selecione o nó da máquina virtual 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 da depuração remota na máquina virtual para habilitar a depuração.

    Comando Depuração habilitada para máquina virtual

    Log de Atividades do Azure

  6. Publique seu projeto, como descrito em Como implantar um projeto Web usando a publicação de um clique 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 estejam disponíveis durante a depuração.

    Configurações de publicação

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

  8. Depois de publicar o 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.

    Comando Anexar depurador

  9. Na caixa de diálogo Anexar ao Processo, escolha Selecionar a fim de limitar a lista de resultados para mostrar apenas os tipos de código que você deseja depurar. Depure um código gerenciado de 32 ou 64 bits, um código nativo ou ambos.

    Caixa de diálogo Selecionar Tipo de Código

  10. Selecione os processos que você deseja depurar na máquina virtual e selecione Anexar. Por exemplo, você pode escolher o processo w3wp.exe se quiser depurar um aplicativo Web na máquina virtual. Consulte Depurar um o mais processos no Visual Studio para obter mais informações.