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.printlninstruçõ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.
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.
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:
![Depurando no IntelliJ IDEA: um guia para iniciantes - 5]()
-
Em um método:
![Depurando no IntelliJ IDEA: um guia para iniciantes - 6]()
-
Em uma aula:
![Depuração no IntelliJ IDEA: um guia para iniciantes - 7]()
í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:
- Bee.java:24 — na classe Bee na linha 24
- Main.java:14 — na classe Main na linha 14
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.
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...
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 HoneyPlant.java:20:
É exatamente disso que estávamos falando acima. Vamos observar essa RuntimeException executando o 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.
Como resultado, teremos o programa parado no momento antes da exceção ser lançada e veremos este ícone: 
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:
- 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:
O aplicativo é executado até a conclusão e fornece a seguinte resposta:
"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:
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:
- 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:
Agora usaremos F8 para percorrer este método e descrever o que acontece nele:
- 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