Depurar um serviço do Cloud Run no Cloud Code para VS Code

Com o Cloud Code para VS Code, é fácil depurar um aplicativo implantado no Cloud Run usando o skaffold debug. Para informações detalhadas sobre a depuração do Skaffold, consulte Como depurar com o Skaffold.

Não é necessário concluir a configuração manual, como a configuração do encaminhamento de portas ou a injeção de argumentos de depuração específicos da linguagem. A depuração exige um aplicativo do Cloud Run pronto para o Cloud Code que inclua um arquivo de configuração skaffold.yaml e um arquivo launch.json do tipo cloudcode.cloudrun.

Depurar o serviço do Cloud Run

Para depurar o serviço, siga estes passos:

  1. Para executar seu serviço e anexar uma sessão do depurador a ele, abra a paleta de comandos (pressione Ctrl/Cmd+Shift+P ou clique em Visualizar > Paleta de comandos) e execute o comando Depurar no emulador do Cloud Run.

  2. Na caixa de diálogo "Run/Debug no Cloud Run Emulator", defina as especificações para sua configuração:

    • Escolha Docker ou Buildpacks como seu builder e, em seguida, especifique seu Dockerfile ou Buildpack.
    • (Opcional) Para especificar um destino do Dockerfile ou argumentos de versão, clique em Show Advanced Build Settings e, em seguida, especifique o destino ou os argumentos.
    • Opcional: para especificar um nome de serviço personalizado, URL de imagem de contêiner, porta de contêiner, identidade a ser usada pelo serviço, número de CPUs dedicadas ou quantidade de memória para alocar a cada instância de contêiner, clique em Mostrar configurações avançadas de serviço e, em seguida, especifique os valores.
    • (Opcional) Para especificar quaisquer variáveis de ambiente, clique em Mostrar configurações avançadas de serviço, clique em Variáveis de ambiente e especifique os valores.
    • (Opcional) Para especificar conexões do Cloud SQL, clique em Conexões e defina uma conexão por linha.
    • (Opcional) Para que o VS Code restabeleça uma sessão de depuração depois de salvar uma alteração no código, marque a caixa de seleção Recriar e executar novamente automaticamente quando houver alterações.

    Se você quiser personalizar ainda mais a execução do serviço, edite o arquivo launch.json diretamente.

  3. Para iniciar a depuração do serviço, clique em Depurar.

  4. Se solicitado, autentique suas credenciais para executar e depurar um aplicativo localmente.

  5. Para cada contêiner depurável do seu serviço, confirme ou insira o diretório no contêiner remoto em que o programa que você quer depurar é encontrado.

    Como alternativa, pressione ESC para pular a depuração de um contêiner.

    Solicitação de raiz remota

    O Cloud Code anexa uma sessão de depuração para cada contêiner depurável no serviço.

    Por padrão, quando você salva uma alteração no aplicativo, o Cloud Code o implanta novamente e configura uma nova sessão de depuração. Alterne esse recurso com a sinalização watch na configuração de inicialização do seu projeto.

  6. Para adicionar um ponto de interrupção, clique na margem do editor do arquivo que você está depurando.

    Os círculos preenchidos em vermelho indicam pontos de interrupção ativos.

    Para um controle mais preciso do ponto de interrupção, use a seção Pontos de interrupção na visualização de depuração do VS Code.

    Seção "Pontos de interrupção" no painel esquerdo da Visualização de depuração que permite adicionar, remover e desativar pontos de interrupção

    Quando você envia uma nova solicitação ao serviço, ela é pausada na linha especificada.

  7. Após a conclusão da sessão, clique com o botão direito do mouse para usar os seguintes comandos:

    • Ver registros: abra os registros do aplicativo de uma implantação específica com a Análise de registros do Cloud Code
    • Abrir URL:abre o URL do serviço de aplicativo de um serviço específico em um navegador da Web.
  8. Se você tiver desativado o modo de exibição na configuração de inicialização e quiser fazer alterações no aplicativo e recriar e reimplantá-lo, clique na barra de status do Cloud Code e, em seguida, clique em Ativar modo de exibição.

  9. Para inspecionar variáveis e informações de pilha, use a barra lateral de depuração. Para interagir com a sessão, use o Console de depuração (em inglês) no depurador do painel inferior.

  10. Para interromper a implantação, clique no botão Interromper na barra de ações da implantação atual

    Barra de ações para implantação do Cloud Run

Resolver problemas de criação de contêineres

Se você estiver recebendo o código de erro BUILD_DOCKER_UNKNOWN, isso indica um problema com o Docker. Para resolver esse problema, execute uma ou mais das seguintes tarefas:

  • Reinicie o Docker e tente criar o contêiner novamente.

  • Se você ainda estiver recebendo o mesmo erro após a reinicialização, o Docker pode estar ficando sem espaço em disco. Para saber mais sobre a limpeza de objetos não utilizados no Docker, consulte Eliminar objetos Docker não utilizados.

  • Teste a extensão Uso de disco do Docker para liberar espaço.

Detalhes da configuração

O Cloud Code processa os seguintes detalhes de configuração específicos da linguagem:

Node.js

Como reescrever o ponto de entrada para invocar:

node --inspect=localhost:9229

Python

Instale o módulo ptvsd usando um contêiner init e reescrevendo o ponto de entrada para invocar:

python -m ptvsd --host localhost --port 5678

Go

Instalar o depurador dlv usando um contêiner de inicialização e reescrever o ponto de entrada para que a sessão de depuração iniciada seja executada somente com um servidor de depuração (no modo headless) o processo depurado no início, aceita várias conexões de clientes e escuta em localhost:56268:

dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --

Java

Adicionar um ambiente JAVA_TOOLS_OPTIONS com a configuração apropriada do Java Debug Wire (JDWP) para que o agente de depuração JDWP detecte uma conexão de soquete na porta 5005 e permita que a VM comece a ser executada antes do depurador anexado:

jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y

.NET

Os aplicativos .NET Core são configurados para serem implantados com vsdbg para código VS.

Se você encontrar problemas com a configuração automática, consulte Configuração e configuração detalhadas do depurador para receber ajuda na solução de problemas.

Receber suporte

Acesse o GitHub (em inglês) para enviar feedback e informar problemas ou o Stack Overflow (em inglês) para fazer perguntas.