Using ABAP Debugger

Objective

After completing this lesson, you will be able to depurar um programa ABAP

Iniciar a utilização do ABAP debugger no ADT

Não há como evitar o fato de que erros ocorrem em programas. No entanto, eles se manifestam de diferentes maneiras. Quando um usuário inicia um aplicativo com erro, ele pode falhar, algo inesperado pode ocorrer ou absolutamente nada pode ocorrer. Do ponto de vista do usuário, no nível da interface do usuário, é impossível dizer exatamente como e por que esse erro ocorreu.

Como desenvolvedor, você precisa examinar o programa mais de perto, linha por linha, para estabelecer exatamente quais instruções e combinações de valores nas diferentes variáveis do programa causaram o erro. É aqui que o depurador entra.

O depurador no ADT é uma ferramenta de diagnóstico importante que você pode utilizar para analisar uma aplicação ABAP.

Com o depurador, você pode determinar por que um programa não está funcionando corretamente, pisando dentro do programa no momento da execução. Isso permite que você veja as instruções que estão sendo executadas e o valor de modificação de valores de variável à medida que o programa prossegue.

Para usar o depurador, você primeiro decide onde iniciar o processo de depuração. Uma forma é definir pontos de parada no texto fonte, executar seu programa e parar nesse ponto de parada definido.

Algumas das funcionalidades no depurador que estão disponíveis são as seguintes:

Recursos do depurador de ferramentas de desenvolvimento ABAP (ADT)

RecursosDepurador ADT
Definir pontos de paradaSim
WatchpointsSim (dependendo da liberação)
Pontos de parada condicionaisSim
Passando pelo códigoSim
Exibindo valores de variávelSim

Depurar um programa ABAP usando ferramentas de desenvolvimento ABAP (ADT)

Quando você depura um programa ABAP utilizando ADT, você utiliza a perspectiva de depuração. Essa é uma versão personalizada da perspectiva de depuração padrão em Eclipse e contém visões e funções particularmente importantes para depuração.

Captura de tela da perspectiva de depuração com visões específicas de depuração

Alguns elementos importantes da perspectiva do depurador são os seguintes:

Visão de texto fonte

A visão Texto fonte é a parte central da perspectiva do depurador. Ele exibe o texto fonte e destaca a posição atual no programa.

Visão de variáveis

A visão Variáveis também é muito importante. Você utiliza esta visão para exibir os valores atuais de variáveis de variáveis.

Visão de pontos de parada

A visão Pontos de parada é exibida ao lado da visão Variáveis (não selecionada na figura anterior, Depurar perspectiva). Você utiliza esta visão para exibir, eliminar ou criar pontos de parada. Os pontos de parada são pontos no programa nos quais o processamento normal é interrompido e o sistema exibe o depurador para que você possa analisar o estado do programa exatamente nesse momento.

Funções de navegação

Durante a depuração de um programa, você usa as funções de navegação para controlar a execução do código.

Visualização de depuração

A visão de depuração na parte superior esquerda exibe a sessão de depuração e a hierarquia de chamadas. Você precisará disso mais tarde quando depurar chamadas de unidades de modularização, por exemplo, métodos.

Seletor de perspectiva

Você pode voltar para a perspectiva ABAP com os botões Seletor de perspectiva no canto superior direito.

Controle da execução do código

Algumas funções de navegação

Ao iniciar a depuração, utilize as funções de navegação para controlar a execução do código.

Captura de tela do botão “Passo a passo”
Captura de tela do botão Retomar

Seguem-se algumas funções de navegação importantes:

Etapa até (F5)

Selecione Etapa em ou selecione F5 em seu teclado para executar uma única etapa. Utilize esta função para uma análise passo a passo. Se, por exemplo, você quiser ver que bloco de código de uma estrutura de controle é realmente executado.

Continuar (F8)

Selecione Continuar ou F8 em seu teclado para executar o programa até o próximo ponto de parada.  Se o depurador não atingir mais pontos de parada, o programa é executado até o fim e a sessão de depuração é cancelada.

Executar para linha (Shift+F8)

Selecione Executar até linha ou Shift+F8 em seu teclado para executar o programa até a posição atual do cursor. Selecionar uma linha de código e selecionar esta função é uma alternativa conveniente para definir um ponto de parada, selecionar Retomar e remover o ponto de parada novamente.

Saltar para linha (Shift+F12)

Selecione Ir para linha ou Shift+F12 no teclado para ignorar algumas linhas de código ou para saltar para trás para algum código já executado. Esta função pode ser útil para simular o que aconteceria se um determinado pedaço de código fosse removido ou para repetir a depuração de um pouco de código que você não analisou pela primeira vez. Tenha em mente que isso está saltando, não executando o código. Quando você salta para trás, as modificações nos objetos de dados não são anuladas.

Encerrar

Selecione Finalizar (ícone de caixa vermelha) se você tiver concluído a depuração e não quiser executar o programa restante. A sessão de depuração é encerrada imediatamente.

Exibir conteúdo de objetos de dados

Uma forma de analisar o conteúdo dos objetos de dados no depurador é a funcionalidade de informação rápida do editor ABAP. No modo de depuração, posicione o cursor no nome de um objeto de dados e aguarde um momento. É aberta uma caixa de diálogo com o conteúdo do objeto de dados.

Outra forma de analisar o conteúdo dos objetos de dados no depurador é a visão Variáveis. Esta visão exibe uma lista de objetos de dados e seus valores atuais. A lista principal, as chamadas variáveis de nível superior, contém alguns objetos de dados integrados, por padrão. Neste exemplo, SY-SUBRC e ME. Expanda o nó Locals para ver uma lista de todos os objetos de dados variáveis definidos no bloco de processamento atual.

Existem três formas de adicionar objetos de dados à lista principal na visão Variáveis:

  • No editor, clique duas vezes no nome de um objeto de dados
  • Na lista de variáveis, clique com o botão esquerdo do mouse no caractere de preenchimento <Enter variable> e insira o nome do objeto de dados
  • Clique com o botão direito em uma variável no nó Locals e selecione Show as Top Level Variable

Uma forma de analisar o conteúdo dos objetos de dados no depurador é a funcionalidade de informação rápida do editor ABAP. No modo de depuração, posicione o cursor no nome de um objeto de dados e aguarde um momento. É aberta uma caixa de diálogo com o conteúdo do objeto de dados.

Outra forma de analisar o conteúdo dos objetos de dados no depurador é a visão Variáveis. Esta visão exibe uma lista de objetos de dados e seus valores atuais. A lista principal, as chamadas variáveis de nível superior, contém alguns objetos de dados integrados, por padrão. No exemplo, estes são SY-SUBRC e ME. Expanda o nó Locals para ver uma lista de todos os objetos de dados variáveis definidos no bloco de processamento atual.

Existem três formas de adicionar objetos de dados à lista principal na visão Variáveis:

  • No editor, clique duas vezes no nome de um objeto de dados
  • Na lista de variáveis, clique com o botão esquerdo do mouse no caractere de preenchimento <Inserir variável> e insira o nome do objeto de dados
  • Clique com o botão direito em uma variável no nó Locals e selecione Show as Top Level Variable

Aqui está uma dica. Para remover um objeto de dados da lista, clique com o botão direito do mouse nele e selecione Remover.

Watchpoints

Um watchpoint simples em uma variável faz com que o programa pare no depurador sempre que o valor dessa variável muda. Ao adicionar uma condição, o programa só é interrompido quando o valor da variável é modificado e a condição é cumprida.

Para definir um watchpoint em uma variável, clique duas vezes na variável na exibição do código-fonte, clique com o botão direito e selecione Definir Watchpoint. Isso cria um watchpoint nesta variável, que você pode ver na visão Pontos de parada.

Para adicionar uma condição a um watchpoint, selecione-a na lista de pontos de parada e insira a condição no campo Condição. Pressione Enter para salvar o watchpoint com a condição.

Captura de tela de um watchpoint definido na visão de pontos de parada

Se um valor inesperado de uma variável estiver causando problemas, você pode rastrear seu valor durante a execução do programa usando um Watchpoint.

Um Watchpoint simples em uma variável faz com que o programa pare no depurador sempre que o valor dessa variável muda. Ao adicionar uma condição, o programa não é interrompido a cada modificação de valor da variável, mas somente nos casos em que também a condição é cumprida.

Para definir um Watchpoint em uma variável, apenas enquanto no depurador, destaque a variável no código-fonte, clique com o botão direito nela e selecione Definir Watchpoint. Isso cria um Watchpoint na variável, que você pode ver na visão Pontos de parada.

Selecione a variável Watchpoint para adicionar uma condição a um Watchpoint, selecione-a na lista de pontos de parada e insira a condição no campo Condição. Selecione Enter no teclado para salvar o Watchpoint com a condição.

Para remover o Watchpoint, vá para a visão Breakpoints, clique com o botão direito na variável Watchpoint e selecione Remove.

Depurar uma aplicação ABAP e definir um watchpoint

Exercício empresarial

Agora, veremos como definir um ponto de parada e criar um watchpoint.

Nota

Neste exercício, XX se refere ao seu número.

Etapas

  1. Abra a classe local LHC_GROCERY da classe ZBP_R_XX_GROCERY. Adicione um ponto de parada quando um valor for atribuído ao campo lv_valid.

    1. Clique duas vezes na classe ZBP_R_XX_GROCERY no Project Explorer.

    2. Selecione a aba Tipos locais na parte inferior da janela do editor.

    3. Para definir o ponto de parada, clique duas vezes na margem da linha:

      lv_expiration = ls_grocery-Expirationdate.
  2. Execute o programa de aplicação.

    1. Clique duas vezes na ligação de serviço ZUI_XX_GROCERY_04 no explorador de projetos para abrir a ligação de serviço.

    2. Em Detalhes da versão do serviço, selecione Mercearia abaixo de Conjunto de entidades e Associação.

    3. Pressione Visualizar... para executar o aplicativo.

  3. Percorra o código e veja as variáveis.

    1. Pressione Ir para visualizar a lista de supermercados. Se a lista estiver vazia, pressione Criar e crie pelo menos um item de supermercado.

    2. Marque o campo de seleção à esquerda de um item de supermercado e pressione Verificar expiração.

    3. Haverá um prompt no Eclipse para alternar para a perspectiva de depuração. Pressione Comutador. A perspectiva de depuração é agora exibida.

    4. Para exibir o valor de lv_Expiration, passe o mouse sobre lv_due na linha:

      lv_expiration = ls_grocery-Expirationdate.
    5. Clique duas vezes em lv_expriation para adicionar à lista de variáveis no lado direito da janela.

    6. Pressione Etapa em (F5) (etapa individual). Observe o valor modificado para lv_expiração na lista de variáveis.

    7. Percorra mais códigos e veja os valores de variável nos quais você está interessado.

    8. Para terminar, pressione Continuar (F8).

      Captura de tela do botão Retomar
  4. Crie um watchpoint para uma variável.

    Nota

    Para que o watchpoint seja atingido, o item de supermercado selecionado deve ter uma Data de vencimento no passado. Se não for esse o caso, clique em um item de supermercado da lista e, na tela detalhada, selecione Editar e defina a Data de vencimento como uma data no passado.
    1. Para criar um watchpoint em uma variável, repita as etapas anteriores até entrar na perspectiva de depuração.

    2. Com o mouse, clique com o botão direito do mouse em lv_expirou. Selecione Definir watchpoint.

    3. Na parte superior direita da tela, mude da guia Variáveis para a guia Ponto de parada.

    4. Clique duas vezes em lv_expirou e adicione esta condição na parte inferior da visão.

      = abap.true
    5. Pressione Save Save (Ctrl-S).

    6. Pressione Continuar (F8).

  5. Visualizar os valores antigos e novos da variável watchpoint.

    1. Pressione a guia Variáveis.

    2. Expanda Valores Watchpoint LV_EXIPIRED. Visualizar valor recente e valor atual.

  6. Retomar a aplicação e voltar para a perspectiva ABAP.

    1. Pressione Continuar (F8).

    2. Pressione o botão Perspectiva ABAP na parte superior direita da janela.

    Praticar