Como usar o Cloud Debugger

O Cloud Debugger pode capturar e inspecionar a pilha de chamadas e as variáveis locais de um aplicativo ativo em execução na nuvem. Ele pode fazer isso em uma variedade de plataformas, como o App Engine, o Compute Engine, o GKE e o Cloud Run, sem interromper o app ou deixá-lo lento.

Ele funciona da mesma maneira que o depurador padrão do ambiente de desenvolvimento integrado e oferece a mesma interface do usuário, com duas diferenças principais:

  • O Debugger não pausa o aplicativo em execução.
  • Não é possível passar por um aplicativo no Debugger.

Para saber mais sobre o suporte ao Debugger, consulte este guia.

Requisitos

Para executar o Debugger, você precisará dos seguintes recursos:

Como usar o Debugger

Para usar esse recurso, siga estas instruções:

  1. Abra seu projeto dentro do IntelliJ.
  2. Selecione Run > Edit Configurations.
  3. Clique no símbolo de adição (+) no canto superior esquerdo e selecione Cloud Debugger na lista suspensa.
  4. Digite um nome para sua configuração no campo Name.
  5. Verifique se seu projeto está selecionado no campo Project.
  6. Clique em OK.
  7. Clique no ícone de inseto verde "depurar" na barra de ferramentas para iniciar o depurador.
  8. Na caixa de diálogo Attach to an Application, selecione o módulo de back-end que você quer depurar e clique em Attach.

Como definir um local do instantâneo

Um instantâneo captura as variáveis locais e a pilha de chamadas no local especificado no código-fonte. O local do instantâneo se aplica a todas as instâncias do seu aplicativo em execução.

Para definir o local do snapshot, siga estas instruções:

  1. Depois de anexar o Debugger a um aplicativo em execução, navegue até o arquivo que contém o código-fonte que você quer assistir.
  2. Clique nas linhas que têm os snapshots você quer capturar na área da calha à esquerda, como faria para definir um ponto de interrupção para um aplicativo local usando o depurador comum do IDEA.

    Um círculo azul aparecerá na área à esquerda para marcar o local do snapshot. O painel "Snapshots do Debugger" exibe os snapshots pendentes.

  3. Clique no círculo azul para remover o local do snapshot.

No exemplo a seguir, o local do snapshot é definido na linha if (userAgent != null) {.

Definir o local do snapshot

Como conseguir o snapshot

Na primeira vez que uma instância executa o código no local do instantâneo, o depurador captura um instantâneo e o disponibiliza para visualização. Então será possível examinar o snapshot e usar os dados para depurar seu aplicativo.

O rótulo no snapshot no painel "Snapshots do Debugger" mudará de Pendente para o momento em que o Debugger capturou o snapshot.

Ver pilha de trace

Conceitos avançados

Definir uma condição de instantâneo

Essa condição é uma expressão booleana que diz ao depurador para capturar um snapshot somente quando o valor for verdadeiro. Por exemplo, x !=0. A condição é uma expressão booleana completa que pode incluir operadores lógicos e numéricos, por exemplo, score < 0 || score > 500.

Expressões de inspeção

Às vezes, as informações necessárias para depurar um problema não estão imediatamente aparentes nas variáveis e nos campos locais do aplicativo. Em particular, ao executar no App Engine, o gerente de segurança impede que você se aprofunde nos membros particulares de classes do sistema, como java.util.Hashmap. Em casos assim, uma expressão de inspeção opera como uma variável local temporária e eficaz para expor mais informações. As expressões de inspeção podem avaliar expressões complexas e transferir hierarquias de objeto quando um instantâneo é capturado.

Você pode especificar uma expressão de inspeção depois de definir a localização do instantâneo. As expressões de inspeção são compatíveis com os mesmos recursos de linguagem das condições do snapshot descritas anteriormente.

Como conseguir suporte

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