Depurar um app no Cloud Code para IntelliJ

Usando o Cloud Code para IntelliJ, você depura facilmente seus aplicativos implantados em um cluster do Kubernetes. É possível depurar um aplicativo em um cluster local (como o minikube ou o Docker Desktop), o Google Kubernetes Engine ou qualquer outro provedor do Cloud.

Com a compatibilidade com a depuração do Cloud Code, você ignora a configuração manual, como configurar o encaminhamento de portas, instalar um back-end de depuração ou injetar argumentos de depuração específicos da linguagem da maneira correta. Você só precisa de um aplicativo do Kubernetes pronto para o Cloud Code que inclua um arquivo de configuração skaffold.yaml.

O Cloud Code também permite depurar um aplicativo enquanto faz alterações e itera no código-fonte.

IDEs compatíveis

A tabela a seguir lista as linguagens e os ambientes de desenvolvimento integrado compatíveis com a depuração. A tabela também lista os plug-ins necessários, quando aplicável:

Idioma Edições e ambientes de desenvolvimento integrado compatíveis Plug-in necessário
Java IntelliJ IDEA Ultimate N/A
Comunidade IntelliJ IDEA N/A
Go IntelliJ IDEA Ultimate Plug-in do Go
GoLand N/A
Node.js IntelliJ IDEA Ultimate Plug-in do Node.js
WebStorm N/A
Python IntelliJ IDEA Ultimate Plug-in do Python
PyCharm Professional N/A

Para mais informações sobre a compatibilidade com o ambiente de desenvolvimento integrado, consulte Ambientes de desenvolvimento integrado do JetBrains (em inglês).

Com o Cloud Code, é possível definir pontos de interrupção e depurar aplicativos remotos em execução nos contêineres das seguintes linguagens:

Java

O Cloud Code adiciona automaticamente uma variável de ambiente, JAVA_TOOL_OPTIONS, com a configuração de JDWP apropriada para ativar a depuração. Se JAVA_TOOL_OPTIONS já estiver presente, o Cloud Code usará as configurações especificadas em JAVA_TOOL_OPTIONS.

Node.js

Dependendo da estrutura do aplicativo e da configuração de criação da imagem, talvez seja necessário ajudar o depurador a mapear as fontes locais para as fontes remotas no contêiner. Isso permite que o depurador de nós processe corretamente seus pontos de interrupção.

É possível configurar isso de uma das seguintes maneiras:

  • Configuração manual

    Na lista suspensa, selecione Develop on Kubernetes Run Configuration e clique em Edit Configurations. Na guia Depurar, configure o mapeamento de origem da origem do aplicativo local para o local de origem no contêiner remoto.

    Escolher um local de origem na seção de mapeamento de origem da guia "Depuração"

    Opções de configuração:

    • File/directory: o arquivo ou diretório local do aplicativo em execução no Kubernetes.
    • Caminho remoto: o caminho para o arquivo ou diretório em execução no contêiner no Kubernetes.
  • Configuração automática

    É possível adiar o mapeamento para o Cloud Code. Quando você inicia a sessão de depuração, o Cloud Code tenta inferir esse mapeamento automaticamente. O mapeamento inferido é apresentado em uma caixa de diálogo; Uma caixa de diálogo para cada artefato que você está depurando.

    Caixa de diálogo de mapeamento de caminho remoto para cada artefato, especificando o caminho remoto que está sendo usado

    Opções de configuração:

    • Caminho local: o caminho local para a raiz do artefato que você está depurando.
    • Caminho remoto: o caminho para o arquivo ou diretório em execução no contêiner no Kubernetes. É possível modificá-lo por seu próprio valor. Se você clicar em Cancelar, nenhum mapeamento será aplicado.

Go

Para configurar seu aplicativo para depuração, seu app precisa ser um aplicativo baseado em módulo Go e ser identificado como baseado em Go definindo um dos padrãos Variáveis de ambiente de execução do Go no contêiner, como GODEBUG, GOGC, GOMAXPROCS ou GOTRACEBACK. GOTRACEBACK=single é a configuração padrão para Go e GOTRACEBACK=all é uma configuração geralmente útil.

Como opção, mas recomendado, seu app precisa ser criado com as opções -gcflags='all=-N -l' para desativar as otimizações. Os perfis do Skaffold são uma opção útil para isso. Eles podem ser definidos com o campo Perfil de implantação na sua configuração do Run no Guia Build/Deploy.

Python

Para configurar seu aplicativo para depuração, verifique se você atende aos seguintes pré-requisitos:

  • IDE, edição e plug-in são compatíveis

    Para ver ambientes de desenvolvimento integrado, edições e plug-ins compatíveis, consulte Ambientes de desenvolvimento integrado compatíveis.

  • A versão do Skyffold é 1.25.0 ou mais recente.

    É possível permitir que o Cloud Code gerencie suas dependências ou aponte para uma instalação local do Skaffold. Consulte Preferências > Ferramentas > Cloud Code > Dependências.

  • O interpretador do Python está configurado

    Sem um interpretador do Python configurado no projeto, a depuração não funcionará, porque não há como executar a pydevd, o depurador do Python subjacente.

    Ambiente de desenvolvimento integrado Como configurar
    IntelliJ IDEA A depuração do Python com o Cloud Code requer que um SDK do Python seja configurado para o projeto.

    Acesse File > Project Structure e adicione um SDK Python na guia Project. Se não existir, adicione uma na guia SDK.
    PyCharm Acesse File > Settings > Project > Python Interpreter ou para Mac OS X, PyCharm > Preferences > Project > Python Interpreter e adicione um interpretador do Python. de dados.

Para mais informações, consulte a documentação de depuração do Skaffold.

Cloud Debugger

  1. Para iniciar o ciclo de desenvolvimento no modo de depuração no cluster do Kubernetes, clique na ação de depuração para Ícone do botão de execução Desenvolver no Kubernetes.

    Como iniciar o ciclo de desenvolvimento do cluster do Kubernetes no modo de depuração

    O ciclo de desenvolvimento contínuo é iniciado no modo de depuração.

    O Cloud Code anexa uma sessão de depuração:

    Depurador do Kubernetes anexado

  2. Agora é possível realizar as tarefas que você normalmente faz ao depurar código local, como definir pontos de interrupção e avançar o código, em um cluster ativo do Kubernetes.

    Sessão do depurador do Kubernetes

  3. Para encerrar a sessão de depuração, clique no ícone de parada na configuração de execução Desenvolver no Kubernetes.

Como receber suporte

Para enviar um feedback ou informar um problema no ambiente de desenvolvimento integrado do IntelliJ, acesse Tools > Cloud Code > Help / About > Envie feedback ou informe um problema para informar um problema no GitHub ou faça uma pergunta no Stack Overflow.

Você também pode participar do canal #cloud-code, que faz parte da comunidade do Google Cloud no Slack.