Carregando...

debugging em Java

Ache um resultado errado imprimindo os valores que voce ja tem, depois corrija a linha ruim. Em Yard.java, defina int x = 10; e int y = 2;. Imprima x e y. Calcule int sum = x - y; por engano e imprima sum. Compile com javac Yard.java e rode java Yard. A tela deve mostrar os dois valores e depois 8. Uma segunda demo troca o operador para + para que sum imprima 12. Deixe Javadoc para a pagina seguinte — esta licao e ler a tela para pegar um erro de logica.

Imprima os valores em torno de uma soma errada

A pagina de equals comparou texto de string. Esta pagina caca uma linha aritmetica ruim. Abra Yard.java. Mantenha o nome da classe publica Yard. Apague demos sobrando de equals / == se enterrarem a historia de debug, arquivos horn de Machine sobrando, demos de caminho e qualquer Scanner de teclado. O programa nao deve esperar digitacao. Nenhuma linha import e necessaria.
Dentro de Yard.main, defina os numeros e imprima-os antes de confiar na soma:
int x = 10;
int y = 2;
System.out.println("x=" + x);
System.out.println("y=" + y);
Depois mantenha de proposito uma linha com bug na primeira demo:
int sum = x - y;
System.out.println(sum);
Os prints de x e y provam as entradas. O 8 impresso prova que o operador esta errado para uma soma.

Yard debug prints with minus bug

java
public class Yard {
    public static void main(String[] args) {
        int x = 10;
        int y = 2;
        System.out.println("x=" + x);
        System.out.println("y=" + y);
        int sum = x - y;
        System.out.println(sum);
    }
}

Da pasta que guarda Yard.java, rode javac Yard.java. Quando parenteses, chaves e ponto e virgula baterem, javac nao escreve linha propria. Depois rode java Yard — nao java Yard.java. Tire o final .java do comando de execucao. Mantenha uma classe publica no arquivo para o nome bater com Yard.
A tela mostra x=10, depois y=2, depois 8. Percorra a execucao uma vez. Java comeca em Yard.main. Os dois primeiros prints confirmam os numeros guardados. O terceiro print mostra o resultado da subtracao, nao da adicao. O programa compilou e rodou — isto e um erro de logica, nao um ponto e virgula faltando.
Faca a conta no papel uma vez ao lado da tela: dez menos dois e oito. Isso bate com a ultima linha, entao o bug nao e um valor de variavel errado; o bug e o operador que voce escolheu para uma soma. Quando as entradas impressas parecem certas e o resultado parece errado, procure a expressao que montou o resultado.
Se ainda vir true / false de um arquivo equals, mude para o arquivo de ensino de debugging e rode java Yard de novo. Se voce mudar o operador sem imprimir x e y, voce chuta no escuro. Mantenha os prints de valor ate a tela bater com o que voce espera das entradas. Deixe rotulos temporarios no lugar enquanto caca; voce pode limpa-los depois que a correcao estiver provada.
Diga a regra em voz alta enquanto olha a tela: imprima os fatos, leia o resultado errado, depois mude a linha que causou isso. Nao invente um bloco de comentario Javadoc como a correcao nesta pagina. Javadoc espera a proxima licao.

Corrija o operador e rode de novo

Um segundo programa mantem os mesmos prints de x e y. A linha da soma usa + em vez de -. O ultimo print deve mostrar 12.

Yard fixed plus sum

java
public class Yard {
    public static void main(String[] args) {
        int x = 10;
        int y = 2;
        System.out.println("x=" + x);
        System.out.println("y=" + y);
        int sum = x + y;
        System.out.println(sum);
    }
}

Compile com javac Yard.java, depois rode java Yard. A tela mostra x=10, depois y=2, depois 12. As entradas nao mudaram. O operador mudou. Este e o loop de debug para este formato iniciante: veja os valores, ache a operacao ruim, corrija, compile de novo, rode de novo.
Leia a linha da soma mais uma vez: int sum = x + y;. Mantenha os prints com rotulo para que um erro posterior ainda mostre as entradas. Quando o ultimo numero bater com 10 + 2, a linha de logica esta corrigida nesta demo. Compare os dois arquivos de ensino lado a lado se ambos estiverem abertos: a unica diferenca intencional deve ser - versus + na linha da soma.
Se demos de equals ainda ficarem por perto, guarde-as como historia. Para esta licao rode o arquivo de ensino de debugging para a tela mostrar numeros, nao booleans de string. Se javac reclamar de classes publicas duplicadas, mantenha so Yard public.

A tabela e o mapa curto desta pagina. Primeiro voce olha. Depois imprime. Depois muda uma linha clara e verifica. Pule chute sem tela. Pule apagar todos os prints antes de saber que a correcao funcionou.

📊 Beginner debug steps on Yard

Step What you do
1 Run java Yard and read every printed line
2 Add println for the values you distrust
3 Fix the bad operator or condition, then compile and run again

Comparado com checagens equals

Na pagina de equals, equals e == responderam conteudo versus identidade para strings. Nesta pagina, println responde o que seus numeros realmente sao quando um resultado parece errado. Voce ainda compila Yard.java e roda java Yard. Os habitos novos sao prints rotulados de valor, ler um resultado errado como pista, e rodar de novo depois de uma correcao de uma linha.
Debugging aqui nao e um menu especial. E saida comum usada como lanterna nas suas proprias variaveis. Quando a lanterna mostra entradas boas e um resultado ruim, a expressao que montou o resultado e a suspeita.
Se um arquivo a.equals(b) sobrando ainda estiver aberto, voce vera true e false. Mude para o arquivo de debugging para que main imprima x, y e sum. Mantenha demos de Javadoc fora desta pagina. Mantenha entrada de teclado fora desta pagina.

Antes de Javadoc

Voce pode imprimir x e y, manter um bug de menos, e ver 8 depois dos rotulos. Voce pode mudar o operador para mais e ver 12. Compile Yard.java e rode java Yard para cada demo mantida por vez. A tela disse onde a logica falhou. A pagina seguinte e Javadoc, onde voce documenta metodos com comentarios especiais para leitores e ferramentas.
Mantenha a demo com bug para uma tela errada clara. Mantenha a demo corrigida para um passo de verificacao claro. Mantenha arquivos Javadoc fora desta pagina. Esses tres habitos sao o checkpoint antes de seguir. Quando prints rotulados mais uma soma corrigida baterem com 10 + 2, debugging fez o trabalho desta licao e voce esta pronto para o proximo topico sobre Javadoc.
Uma ultima passagem pela pasta: um Yard public, prints de valor em torno da soma, sem espera de teclado, sem comentarios de documentacao forcados. Rode javac Yard.java e java Yard mais uma vez na demo que voce mantem aberta. Se a tela ainda mostrar as entradas e o resultado que voce espera, o loop de debug esta solido e o curso pode ir para Javadoc na pagina seguinte. Prefira uma correcao clara por vez para que cada nova execucao ensine uma mudanca.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo