Depure um serviço executado localmente no Cloud Code para IntelliJ

Com o Cloud Code, pode depurar os seus serviços do Cloud Run localmente num ambiente semelhante ao Cloud Run. Pode definir pontos de interrupção, percorrer o código passo a passo e depurar serviços remotos executados em contentores.

O Cloud Code também lhe permite depurar uma aplicação enquanto faz alterações e itera no código-fonte.

Definir a configuração de depuração

Antes de depurar o seu serviço, tem de criar a configuração de depuração:

  1. Navegue para o seletor de configuração Executar/Depurar na barra de navegação e clique em Editar configurações.
  2. Escolha Cloud Run: Run Locally em Cloud Code: Cloud Run.
  3. Clique em OK.

Depurar o seu serviço

Para depurar o seu serviço, siga estes passos:

  1. Clique em Ícone de ação de depuração Depurar para Cloud Run: Run Locally para iniciar o ciclo de desenvolvimento no modo de depuração.

    Clicar em executar no Cloud Run: executar localmente no modo de depuração

  2. O Cloud Code anexa uma sessão de depuração. Quando for bem-sucedido, a janela da ferramenta de depuração é aberta, confirmando a ligação (no separador Consola).

  3. Clique na margem na linha executável do código onde quer adicionar um ponto de interrupção.

    Os círculos preenchidos a vermelho indicam pontos de interrupção ativos, enquanto os círculos vazios com contorno vermelho indicam pontos de interrupção desativados.

  4. Para aceder ao serviço em execução, clique no URL apresentado no painel Registo de eventos.

    Quando o faz, é enviado um novo pedido para o seu serviço e este é pausado na linha marcada com o ponto de interrupção.

    Registo de eventos com notificação de implementação bem-sucedida e URL para pré-visualizar o seu serviço

  5. Para terminar a sessão de depuração, clique no ícone de paragem na configuração de execução do Cloud Run: Run Locally.

IDEs suportados

A tabela seguinte apresenta os idiomas e os IDEs que o Cloud Code suporta para a depuração. A tabela também lista os plug-ins necessários, quando aplicável:

Idioma IDEs e edições suportadas Plugin necessário
Java IntelliJ IDEA Ultimate N/A
IntelliJ IDEA Community N/A
Go IntelliJ IDEA Ultimate Plugin Go
GoLand N/A
Node.js IntelliJ IDEA Ultimate Plug-in Node.js
WebStorm N/A
Python IntelliJ IDEA Ultimate Plugin Python
PyCharm Professional N/A

Para mais informações sobre o apoio técnico de IDEs, consulte o artigo IDEs JetBrains suportados.

Com o Cloud Code, pode definir pontos de interrupção e depurar aplicações remotas executadas em contentores para os seguintes idiomas:

Java

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

Node.js

Consoante a estrutura da sua aplicação e a configuração de compilação de imagens, pode ter de ajudar o depurador a mapear as suas origens locais para as origens remotas no contentor. Isto permite que o depurador do Node processe corretamente os seus pontos de interrupção.

Pode configurar esta opção de uma das seguintes formas:

  • Configuração manual

    Selecione a configuração de execução Cloud Run: Run Locally no menu pendente e, de seguida, clique em Editar configurações. No separador Depurar, configure o mapeamento de origem da origem da aplicação local para a localização de origem no contentor remoto.

    Escolher uma localização de origem na secção de mapeamento de origem do separador Depurar

    Opções de configuração:

    • Ficheiro/diretório: o ficheiro ou o diretório local da sua aplicação em execução no Cloud Run.
    • Caminho remoto: o caminho para o ficheiro ou o diretório em execução no contentor no Cloud Run.
  • Configuração automática

    Pode optar por diferir este mapeamento para o Cloud Code. Quando inicia a sessão de depuração, o Cloud Code tenta inferir este mapeamento automaticamente. O mapeamento inferido é apresentado num diálogo; um diálogo para cada artefacto que está a depurar.

    Caixa de diálogo de mapeamento de caminhos remotos para cada artefacto que especifica o caminho remoto que está a ser usado

    Opções de configuração:

    • Caminho local: o caminho local para a raiz do artefacto que está a depurar.
    • Caminho remoto: o caminho para o ficheiro ou o diretório em execução no contentor no Cloud Run. Pode optar por substituir este valor pelo seu. Se clicar em Cancelar, não é aplicado nenhum mapeamento.

Go

Para configurar a sua aplicação para depuração, a app tem de ser uma aplicação baseada em módulos Go e ser identificada como baseada em Go através da definição de uma das variáveis de ambiente de tempo de execução Go padrão no contentor, como GODEBUG, GOGC, GOMAXPROCS ou GOTRACEBACK. GOTRACEBACK=single é a predefinição para o Go e GOTRACEBACK=all é uma configuração geralmente útil.

Opcionalmente (mas recomendado), a sua app deve ser criada com as opções -gcflags='all=-N -l' para desativar as otimizações. Os perfis do Skaffold são uma opção útil para este fim e podem ser definidos com o campo Perfil de implementação no separador Compilar/Implementar da configuração de execução.

Python

Para configurar a sua aplicação para depuração, certifique-se de que cumpre os seguintes pré-requisitos:

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

    Para ver os IDEs, as edições e os plug-ins compatíveis, consulte o artigo IDEs suportados.

  • A versão do Skaffold é 1.25.0 ou superior

    Pode permitir que o Cloud Code faça a gestão das suas dependências, ou apontar para uma instalação local do Skaffold. Consulte Preferências > Ferramentas > Cloud Code > Dependências.

  • O intérprete Python está configurado

    Sem um intérprete Python configurado no seu projeto, a depuração não funciona, uma vez que não existe forma de executar o pydevd, o depurador Python subjacente.

    IDE Como configurar
    IntelliJ IDEA A depuração de Python com o Cloud Code requer a configuração de um SDK Python para o seu projeto.

    Aceda a Ficheiro > Estrutura do projeto e adicione um SDK Python no separador Projeto. Se não existir nenhum, adicione um no separador SDK.
    PyCharm Aceda a File > Settings > Project > Python Interpreter ou para Mac OS X, PyCharm > Preferences > Project > Python Interpreter e adicione um intérprete Python.

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

Obter apoio técnico

Para enviar feedback ou comunicar um problema no seu IDE IntelliJ, aceda a Tools > Cloud Code > Help / About > Submit feedback or report an issue para comunicar um problema no GitHub.