JavaRush /Blogue Java /Random-PT /Depurar no Intellij IDEA: um guia para iniciantes
Roman Beekeeper
Nível 35

Depurar no Intellij IDEA: um guia para iniciantes

Publicado no grupo Random-PT
Olá a todos, comunidade JavaRush. Hoje falaremos sobre depuração: o que é e como depurar no Intellij IDEA. Depurar no Intellij IDEA: um guia para iniciantes - 1O artigo é destinado a pessoas que já possuem conhecimento mínimo de Java Core. Não haverá estruturas ou processos complexos para publicação de bibliotecas. Caminhada fácil. Então fique à vontade e vamos começar!

Por que você precisa de depuração?

Vamos deixar claro desde já: não existe código sem bugs... É assim que a vida funciona. Portanto, não devemos ficar moles imediatamente e desistir de tudo se o código não funcionar como esperávamos. Depurar no Intellij IDEA: um guia para iniciantes - 2Mas o que fazer? Claro, você pode instruir System.out.printlnsempre que possível e então vasculhar a saída no terminal na esperança de encontrar um erro. Ainda assim, é possível... e eles fazem isso, e fazem isso com cuidado usando logging (você pode ler sobre isso aqui ). Mas se for possível executar o código na máquina local, é melhor usar o Debug . Gostaria de observar imediatamente que neste artigo consideraremos a depuração de um projeto dentro do Intellij IDEA. Se você estiver interessado em ler sobre depuração remota, aqui está um artigo do nosso recurso .

O que é depuração

Depurar no Intellij IDEA: um guia para iniciantes - 3Depurar é o processo de depuração (verificação) do código, quando durante sua execução você pode parar em um local designado e observar o andamento da execução. Entenda o estado do programa em um determinado local. É exatamente como se você pudesse parar a vida e olhar tudo de fora. Legal certo? Nosso objetivo é aprender de forma rápida e fácil como depurar aplicativos usando nosso ambiente de desenvolvimento favorito, o Intellij IDEA.

O que você precisa para começar a depurar

Dou um conselho grátis: enquanto você lê o artigo, faça tudo o que será descrito aqui, felizmente há de tudo para isso. O que você precisa:
  1. Ambiente de desenvolvimento Intellij IDEA versão 2019.3.1 e superior. Caso alguém não tenha, aqui está um link onde você pode baixá-lo. Baixe a Community Edition porque é ela que irei usar.
  2. Clone o projeto do GitHub e importe-o via IDEA.
Abra IDEA: Depurar no Intellij IDEA: um guia para iniciantes - 4Selecione o projeto de apresentação de depuração , clique em OK e obtenha: Depurar no Intellij IDEA: um guia para iniciantes - 5Deixe o projeto de importação de fontes externas, Maven e clique em Concluir . Após importar o projeto, podemos descrever o processo usando um exemplo ao vivo.

Um pouco de teoria... eu prometo :D

Para iniciar a depuração no mínimo grau, você precisa entender o que é breakPoint e algumas teclas de atalho necessárias para começar. BreakPoint é um marcador especial que exibe o local ou estado em que o aplicativo deve ser interrompido. Você pode definir um ponto de interrupção clicando com o botão esquerdo na barra lateral esquerda ou clicando no local do código e pressionando Ctrl + F8 . Os pontos de interrupção vêm em três tipos: um rótulo por linha, um rótulo por variável e um rótulo por método. Se parece com isso:
  • Por linha:

    Depurar no Intellij IDEA: um guia para iniciantes - 6

    se houver um lambda na expressão, o IDEA oferece uma escolha - colocar a expressão em toda a linha ou especificamente no lambda:

    Depurar no Intellij IDEA: um guia para iniciantes - 7
  • Por método:

    Depurar no Intellij IDEA: um guia para iniciantes - 8
  • Por aula

    Depurar no Intellij IDEA: um guia para iniciantes - 9
Os pontos de interrupção podem ser removidos seguindo as mesmas etapas de adicioná-los. Há situações em que é necessário torná-los inativos (mudo). Para fazer isso, na seção Debug, você encontrará um ícone Depurar no Intellij IDEA: um guia para iniciantes - 10que tornará todos os pontos de interrupção inativos. Para ver quais pontos de interrupção já foram definidos, você pode ir em Debug no canto inferior esquerdo e encontrar o ícone Depurar no Intellij IDEA: um guia para iniciantes - 11ou pressionar Ctrl+Shift+F8 : Depurar no Intellij IDEA: um guia para iniciantes - 12Quando formos para a lista de pontos de interrupção, veremos: Depurar no Intellij IDEA: um guia para iniciantes - 13Existem dois pré-pontos aqui:
  • Bee.java:24 - na classe Bee na linha 24
  • Main.java:14 – na classe Main na linha 14
Gostaria de ressaltar que ao clonar um projeto, você não terá esses BreakPoints: você mesmo precisa defini-los! Há também uma seção Java Exception Breakpoints . Uma coisa muito útil. Usando-o, você pode adicionar um ponto de interrupção implícito para que o programa pare antes de lançar qualquer exceção ou específica. Vamos adicionar um ponto de interrupção implícito para RuntimeException. Isso é feito facilmente: no canto superior esquerdo há um sinal de mais “+”. Clique nele e selecione Java Exceptions Breakpoints : Depurar no Intellij IDEA: um guia para iniciantes - 14Na janela que aparece, escreva o nome da exceção que precisa ser adicionada, selecione na lista proposta e clique em OK : Depurar no Intellij IDEA: um guia para iniciantes - 15Concluímos este programa educacional e passamos à prática.

Vamos lá, vamos entrar na selva da depuração

Depurar no Intellij IDEA: um guia para iniciantes - 16Como sou apicultor hereditário, para a apresentação de depuração criei um projeto que descreve o processo de coleta de néctar pelas abelhas, processamento do néctar em mel e obtenção de mel da colmeia. Com base na documentação do arquivo README, que está na raiz do projeto, lemos: comportamento esperado - de todas as flores das quais o néctar é coletado (em valor duplo ), será coletada uma quantidade de mel igual à metade de o néctar coletado. O projeto possui as seguintes classes:
  • Abelha - uma abelha operária comum;
  • BeeQueen - abelha rainha;
  • BeeHive - colmeia;
  • HoneyPlant - planta de mel da qual o mel é coletado;
  • Principal - onde public static void main()está localizado o método em que o projeto é iniciado.
Se você executar o método main(), acontece que não só a quantidade de mel não é contada, mas também aparece um erro... Depurar no Intellij IDEA: um guia para iniciantes - 17Você precisa ver o que há de errado aí. A partir do rastreamento de pilha no canto inferior direito, podemos ver que em HoneyPlant.java:20, uma RuntimeException é lançada: Depurar no Intellij IDEA: um guia para iniciantes - 18Este é exatamente o nosso caso: existe uma RuntimeException, vamos adicionar uma busca por tal exceção, conforme descrito acima, e executar main()o método em modo de depuração. Para fazer isso, clique na seta do triângulo verde no Intellij IDEA antes do método main(): Depurar no Intellij IDEA: um guia para iniciantes - 19e obteremos o programa interrompido no momento antes da exceção com este ícone ser acionada Depurar no Intellij IDEA: um guia para iniciantes - 20Depurar no Intellij IDEA: um guia para iniciantes - 21. Para obter informações completas, você precisa procurar na seção Debug. Possui Variables , que mostra todas as variáveis ​​disponíveis nesta parte da aplicação:
  • néctar = 1,0;
  • néctarCapacidade = -1,0.
A exceção é lançada de forma justa, pois o valor da quantidade de néctar que está na planta melífera não pode ser negativo. Mas por que isso acontece? Afinal, há uma verificação de que se o néctar acabar, um valor zero será retornado nas linhas 15-17:
if ( nectar == 0 ) {
         return 0;
}
Mas o problema é que ele está verificando a variável errada... e isso é um bug no código. Ao invés de verificar o valor do néctar na flor, que está na variável nectarCapacity , o programa verifica o valor do néctar , que entra no método e é a quantidade que eles querem tirar do néctar. Aqui está, o primeiro bug! Portanto, colocamos corretamente e obtemos a expressão:
if ( nectarCapacity == 0) {
         return 0;
}
A seguir executamos main()o método no modo normal (Run `Main.main()`)e não há mais erro, o programa funcionou: O Depurar no Intellij IDEA: um guia para iniciantes - 22aplicativo funcionou e deu a resposta: “33,0 mel foi produzido por 7 abelhas de 2 plantas melíferas” Tudo ficaria bem, mas a resposta é errado... Tudo porque no arquivo README da documentação Está escrito que o néctar se transforma em mel na proporção de 2 para 1:
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
Pelo método principal percebe-se que são duas plantas de mel, 30 e 40 unidades de néctar respectivamente, então no final você deverá obter 35 unidades de mel. E ele escreve esse 33. Para onde foram as outras duas unidades?... Agora vamos descobrir! Para fazer isso, precisamos colocar um ponto de interrupção no método Main.main()na linha nº 28, onde ele é executado beeHive.populateHoney()e executar maino método no modo Debug: Depurar no Intellij IDEA: um guia para iniciantes - 23Vamos dar uma olhada neste ponto. O programa parou antes de executar a 28ª linha. Na parte inferior vemos a seção Debug, que descreve todas as informações sobre o aplicativo em execução. A parte Variáveis, como já mencionado, contém todas as variáveis ​​e objetos que são acessíveis nesta parte da aplicação. A parte Frames mostra as etapas pelas quais a aplicação passa, você pode olhar a etapa anterior e obter todos os dados locais. Para que o programa continue funcionando, você pode pressionar F9 ou o ícone verde, conforme mostrado abaixo: Depurar no Intellij IDEA: um guia para iniciantes - 24Para parar o programa, você precisa clicar no quadrado vermelho: Depurar no Intellij IDEA: um guia para iniciantes - 25Para reiniciar o aplicativo em modo de depuração, você precisa clicar na seta: Depurar no Intellij IDEA: um guia para iniciantes - 26A seguir, para percorrer passo a passo o aplicativo, você pode usar duas teclas:
  • F8 - percorra uma seção do código e não entre em métodos internos;
  • F7 - passe por uma seção do código e insira métodos internos.
Portanto, para colocar o método em operação beeHive.populateHoney(), precisamos pressionar F7, e seguiremos em frente: Depurar no Intellij IDEA: um guia para iniciantes - 27A seguir, passamos pelo modo de depuração usando F8 usando este método até o final e descrevemos o que acontece neste método:
  • Linha 25 – Stream API é usada para coletar mel de todas as abelhas;
  • 26ª linha - o mel é adicionado ao existente;
  • 27ª linha - são alocadas 2 unidades de mel para a rainha;
  • 28ª linha - essas duas unidades são retiradas da quantidade total de mel;
  • Linha 29 - o útero come esse mel.
Foi para lá que essas duas unidades foram, viva! Após comunicação com um analista de negócios, chegamos à conclusão de que o arquivo README da documentação contém um erro e precisará ser atualizado. Vamos atualizar o arquivo README:
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
E é isso: todos os bugs encontrados foram corrigidos, podemos continuar tomando café com calma e lendo artigos no hub JavaRush com um visual inteligente :)

Resumir

Neste artigo descobrimos que:
  • não há trabalho sem erros e a depuração é uma ótima maneira de resolvê-los;
  • o que é um ponto de interrupção e que tipos ele existe;
  • como configurar o ponto de interrupção de exceção;
  • Como navegar no modo de depuração.

Artigo para ler

Veja também meus outros artigos:
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION