Conceitos

Nesta página, você conhecerá os papéis do cliente, o modelo de dados e as operações compatíveis com o Stackdriver Debugger API.

Papéis do cliente

A API define dois papéis de cliente, agentes e clientes de depuração.

Agentes

Um agente é um programa executado no mesmo sistema que o app depurado. O agente é responsável por enviar os dados de estado, como os valores de variáveis do programa e pilhas de chamada, para o Stackdriver Debugger quando um código em um local de ponto de interrupção é executado.

É possível ter mais de um agente por app depurado. Por exemplo, é necessário ter um app feito para várias tarefas prontas para execução. Cada tarefa tem seu próprio agente, mas todos juntos compõem apenas um único app depurado. Porém, se você está executando várias versões de um app, cada uma delas é um app depurado diferente que pode ser depurado separadamente.

Entre os exemplos estão os agentes do depurador fornecidos pelo Google, que podem ser usados em aplicativos executados no Google Compute Engine e programados em Java ou Go.

Clientes de depuração

Um cliente de depuração é um app que permite ao usuário definir e revogar pontos de interrupção, além de ver os dados salvos que são capturados em um ponto de interrupção, também conhecido como instantâneo. Um exemplo de cliente de depuração é a ferramenta Stackdriver Debugger executada no Console do Google Cloud Platform. Outro exemplo é um ambiente de desenvolvimento integrado ao qual você quer adicionar uma funcionalidade de depuração.

Modelo de dados

O modelo de dados da API oferece entidades para os depurados e pontos de interrupção, assim como tipos de dados de estado que um agente pode coletar quando um código no local de um ponto de interrupção é executado.

Depurados

Um depurado é um app que um usuário quer depurar. Como já mencionado, todas as tarefas que compõem um app são consideradas como o mesmo app depurado e compartilham o mesmo código de depurado. Versões diferentes do mesmo app de exemplo são consideradas depurados diferentes. Os depurados são representados na API pela entidade Debuggee (REST ou RPC).

Pontos de interrupção

Um ponto de interrupção é uma entidade que fornece informações para um agente sobre onde e quando coletar dados de estado de um app. Ele também armazena o próprio dado de estado quando este é coletado.

Um ponto de interrupção especifica as seguintes características:

  • local no código-fonte do depurado
  • expressão condicional usada pelo agente para determinar quando coletar os dados de estado
  • expressões para avaliar quando os dados são coletados

Quando os dados são coletados a partir de um depurado, eles podem incluir os seguintes itens:

  • valores de variáveis do programa
  • pilha de chamadas
  • valores de expressões que foram avaliadas

Os pontos de interrupção são representados pela entidade Breakpoint (RPC ou REST).

Locais de origem

Um local de origem define um ponto no app de destino no que se refere ao caminho e número da linha do arquivo. Os locais de origem são representados pela entidade SourceLocation (RPC ou REST).

Variáveis

Uma variável apresenta o conteúdo de um objeto do programa, com ou sem nome, no momento em que os dados de estado foram coletados por um agente. Por exemplo, pode conter o valor de uma variável local do tipo número inteiro ou qualquer número de membros que, propriamente, são variáveis. As variáveis são representadas pela entidade Variable (RPC ou REST).

Mensagens de status

Uma mensagem de status fornece informações sobre o estado dos pontos de interrupção e/ou das variáveis. Por exemplo, um ponto de interrupção definido em um local de origem inválido deve conter uma mensagem de status que indica um erro. As mensagens de status são representadas pela entidade StatusMessage (RPC ou REST).

Mensagens de formato

Uma mensagem de formato é o conteúdo de texto de uma mensagem de status. As mensagens de formato são representadas pela entidade FormatMessage (RPC ou REST).

Operações

As interfaces de controle e de depuração fornecem um conjunto de operações para agentes e clientes de depuração, respectivamente.

Operações de agente

A interface de controle permite ao agentes desempenhar as seguintes operações:

Operação Descrição REST RPC
Registrar Registra o depurado com serviço de controle. register RegisterDebuggee
Listar pontos de interrupção ativos Retorna uma lista com todos os pontos de interrupção ativos para o depurado em questão. list ListActiveBreakpoints
Atualizar pontos de interrupção ativos Atualiza os dados de estado, por exemplo, variáveis do programa e pilha de chamadas, para o app no ponto de interrupção. update UpdateActiveBreakpoint

Veja uma ordem típica de operações para um agente:

  1. Quando um app é iniciado, ele registra o app como um depurado usando o método register ou RegisterDebugger.

  2. Nos intervalos, o agente chama list ou ListActiveBreakpoints para recuperar os pontos de interrupção atualmente definidos.

  3. Quando o app alcança um local do código onde um ponto de interrupção está definido, o agente coleta os dados de estado, como o valor das variáveis do programa ou a pilha de chamadas, e envia para o serviço de controle usando update ou UpdateActiveBreakpoint.

Operações do cliente de depuração

Na interface de depuração, os clientes de depuração podem desempenhar as seguintes operações:

Operação Descrição REST RPC
Listar depurados Lista os depurados onde um usuário do cliente possa definir pontos de interrupção. list ListDebuggees
Definir ponto de interrupção Define o locar de um ponto de interrupção. set SetBreakpoint
Listar pontos de interrupção Retorna uma lista com pontos de interrupção acessíveis ao usuário atual. list ListBreakpoints
Acessar o ponto de interrupção Acessa os detalhes do ponto de interrupção a partir de códigos do depurado e do ponto de interrupção. get GetBreakpoint
Excluir ponto de interrupção Exclui o ponto de interrupção em questão. delete DeleteBreakpoint

Veja uma ordem típica de operações para um cliente:

  1. Quando um usuário inicia o fluxo de trabalho do depurador, abrindo a visualização de depuração na interface do app cliente, por exemplo, o cliente executa o método list ou ListDebugees para recuperar uma lista das versões do app disponíveis para depuração e permite ao usuário escolher a partir delas.

  2. Quando o usuário cria um ponto de interrupção na interface, o app cliente executa a operação set ou SetBreakpoint para definir o ponto de interrupção.

  3. Nos intervalos, o app cliente executa get ou GetBreakpoint para verificar se um depurado executou o código no local do ponto de interrupção e se o agente atualizou os dados de estado para o ponto de interrupção. Caso já tenha feito isso, o app cliente mostra os dados de estado para o usuário.

  4. Se o usuário excluir o ponto de interrupção na IU, o cliente chamará delete ou DeleteBreakpoint.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Stackdriver Debugger