Olá a todos da comunidade CodeGym! Hoje vamos falar sobre depuração — o que é e como depurar no IntelliJ IDEA. Este artigo é destinado a pessoas que já possuem um conhecimento mínimo de Java Core. Não haverá estruturas ou procedimentos complicados para publicar bibliotecas. Um passeio tranquilo. Então fique à vontade e vamos começar!
Selecione o projeto de apresentação de depuração e pressione OK . Então você verá a seguinte janela:
Deixe as opções selecionadas: Importar projeto de fontes externas e Maven . Clique em Concluir . Agora que importamos o projeto, podemos descrever o restante do processo com um exemplo vivo.
ícone na seção Depurar. Isso silenciará todos os pontos de interrupção. Para ver quais pontos de interrupção foram definidos, você pode ir para a seção Depurar no canto inferior esquerdo e encontrar o
ícone ou pressionar Ctrl+Shift+F8 :
Movendo-se para a lista de pontos de interrupção, veremos o seguinte:
Existem dois pontos de interrupção aqui:
Na janela que aparece, escreva o nome da exceção que você deseja adicionar, selecione na lista e clique em OK :
Isso conclui nossa cartilha sobre como configurar as coisas, agora vamos Vou seguir em alguma prática.
da documentação , que pode ser encontrado no diretório raiz do projeto, o comportamento esperado de todas as flores das quais o néctar é coletado é que a quantidade de mel coletado (que assume a forma de um double ) seja igual à metade do o néctar recolhido. O projeto possui as seguintes classes:
Precisamos investigar e determinar qual é o problema. Na pilha de rastreamento no canto inferior direito, podemos ver que em um RuntimeException foi lançado em
É exatamente disso que estávamos falando acima. Vamos observar essa RuntimeException executando o
Como resultado, teremos o programa parado no momento antes da exceção ser lançada e veremos este ícone: ![Depurando no IntelliJ IDEA: um guia para iniciantes - 17]()
Para obter todas as informações disponíveis, precisamos procurar na seção Debug. Tem uma variávelpainel que mostra todas as variáveis disponíveis nesta parte do aplicativo:
O aplicativo é executado até a conclusão e fornece a seguinte resposta:
da documentação , o néctar é convertido em mel na proporção de 2 para 1:
Consideraremos este ponto com mais detalhes. O programa parou de executar antes de executar a linha 28. Na parte inferior, vemos a seção Debug, que mostra todas as informações disponíveis sobre o aplicativo em execução. Como já mencionado, o painel Variáveis contém todas as variáveis e objetos disponíveis nesta parte do aplicativo. O painel Quadros mostra as etapas pelas quais o aplicativo está passando — você pode examinar as etapas anteriores (quadros) e ver todos os dados locais. Para continuar executando o programa, você pode pressionar F9 ou o ícone verde, conforme mostrado abaixo:
Para parar o programa, clique no quadrado vermelho:
Para reiniciar o aplicativo no modo de depuração, clique na seta
: aplicação passo a passo usando duas teclas:
Agora usaremos F8 para percorrer este método e descrever o que acontece nele:
da documentação contém um erro e precisa ser atualizado. Vamos atualizar o arquivo README:
Stack Overflow CodeGym :)

Por que você precisa do modo de depuração
Vamos esclarecer algo imediatamente para nós mesmos: não há código sem bugs... É assim que a vida funciona. Portanto, não devemos cair em pedaços e desistir se nosso código não funcionar como esperávamos. Mas o que devemos fazer? Bem, poderíamos colocarSystem.out.println
instruções em todos os lugares e depois vasculhar a saída do console na esperança de encontrar um erro. Dito isso, você pode (e as pessoas o fazem) depurar usando um log cuidadoso. Mas se você puder executar seu código em uma máquina local, é melhor usar o modo de depuração . Quero observar imediatamente que neste artigo consideraremos a depuração de um projeto usando o IntelliJ IDEA.
O que é o modo de depuração?
O modo de depuração é para depurar (verificar) o código em execução. Isso permite que você interrompa a execução em locais designados e veja como as coisas estão progredindo. Ele permite que você entenda o estado do programa em um determinado local do código. É como poder parar o relógio e olhar tudo de lado. Legal certo? Nosso objetivo é aprender de forma rápida e fácil como depurar aplicativos usando nosso amado ambiente de desenvolvimento IntelliJ IDEA.O que você precisa para iniciar a depuração
Aqui estão alguns conselhos gratuitos: enquanto lê este artigo, faça tudo o que será descrito aqui - você tem tudo o que precisa fazer para acompanhar. O que você precisa:- IntelliJ IDEA versão 2019.3.1 ou superior. Caso alguém não o tenha, aqui está um link onde você pode baixá-lo . Baixe o Community Edition — essa é a versão que usarei.
- Clone este projeto do GitHub e importe-o por meio do IDEA.


Só um pouco de teoria... prometo :D
Para começar a depurar um pouco, você precisa entender o que é um ponto de interrupção e estar familiarizado com algumas teclas de atalho. Um ponto de interrupção é um marcador especial que indica onde você deseja que a execução do aplicativo pare, possivelmente com base no estado do aplicativo. Você pode definir um ponto de interrupção clicando com o botão esquerdo no painel esquerdo ou clicando no local do código e pressionando Ctrl+F8 . Vejamos três tipos de pontos de interrupção: pontos de interrupção de linha, pontos de controle de campo e pontos de interrupção de método. Isto é o que parece:-
Em uma linha:
Se uma instrução tiver uma expressão lambda, o IDEA solicitará que você escolha se deseja colocar o ponto de interrupção na instrução inteira ou especificamente na expressão lambda:
-
Em um método:
-
Em uma aula:




- Bee.java:24 — na classe Bee na linha 24
- Main.java:14 — na classe Main na linha 14


Vamos fazer essa coisa chamada depuração!
Venho de uma longa linhagem de apicultores familiares, então o projeto que criei para ilustrar a depuração descreve modelos do processo de coleta de néctar pelas abelhas, processamento de néctar em mel e, em seguida, obtenção de mel da colmeia. De acordo com o arquivo README- Abelha — uma abelha operária comum
- BeeQueen - a abelha rainha
- BeeHive - a colméia
- HoneyPlant - uma planta de mel (fonte de néctar) da qual o néctar é coletado
- Main — é aqui que encontramos
public static void main()
, o método onde a execução começa.
main()
método, descobriremos que nosso programa não apenas não calcula a quantidade de mel, mas também gera uma exceção... 
HoneyPlant.java:20
: 
main()
método no modo de depuração. Para fazer isso, clique na seta do triângulo verde no IntelliJ IDEA ao lado do main()
método. 


- néctar = 1,0;
- nectarCapacity = -1,0.
if (nectar == 0) {
return 0;
}
Mas o problema é que estamos verificando a variável errada. Isso é um erro no código. Ao invés de verificar a quantidade de néctar disponível na flor (que está armazenada na variável nectarCapacity ), o programa verifica o valor do parâmetro nectar do método , que é a quantidade de néctar que queremos retirar da flor. Aqui está! Nosso primeiro erro! Depois de corrigir isso, obtemos o seguinte código:
if (nectarCapacity == 0) {
return 0;
}
Agora execute o main()
método normalmente (Run 'Main.main()')
. Nenhuma exceção é lançada e o programa funciona: 
"33.0 honey was produced by 7 bees from 2 honey plants"
Tudo estaria bem agora, mas esta resposta está incorreta... De acordo com o arquivo README
## Documentation
Presentation based on honey production.
**Note**: 2 units of nectar = 1 unit of honey
O método principal tem claramente duas plantas de mel com 30 e 40 unidades de néctar, respectivamente. Portanto, devemos acabar com 35 unidades de mel. Mas o programa está nos dizendo que temos 33. Para onde foram as outras duas unidades? Vamos descobrir! Para isso, defina um breakpoint no Main.main()
método na linha 28, onde beeHive.populateHoney()
é chamado e execute o main()
método em modo Debug: 



- F8 — Percorra o código sem entrar nos métodos;
- F7 — Percorra o código e entre nos métodos.
beeHive.populateHoney()
método. Entrando nele, obtemos: 
- Linha 25 — A API Stream é usada para coletar néctar de todas as abelhas
- Linha 26 — O mel recém-criado é adicionado ao mel existente;
- Linha 27 — 2 unidades de mel são alocadas para a rainha
- Linha 28 — Essas duas unidades são retiradas da quantidade total de mel
- Linha 29 — A rainha come este mel.
## Documentation
Presentation based on honey production.
**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Foram realizadas. Corrigimos todos os bugs que encontramos. Podemos continuar calmamente com um olhar presunçoso, tomar um café e ler artigos no vamos resumir
Neste artigo, aprendemos:- o trabalho de todos tem erros e a depuração é uma ótima maneira de corrigi-los
- o que é um ponto de interrupção e quais tipos de pontos de interrupção existem
- como definir um ponto de interrupção de exceção
- como percorrer o código no modo de depuração
GO TO FULL VERSION