Depuração de código Java: técnicas e ferramentas para profissionais

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Depuração de código Java: de "por que não funciona?" até "eu controlo o processo"

\n\n

Todo desenvolvedor Java conhece este sentimento: você inicia a aplicação, ela falha com NullPointerException, e o stack trace leva a lugar nenhum. Ou, pior ainda, o código funciona, mas produz resultados completamente diferentes do esperado. Familiar? Bem-vindo ao mundo da depuração. Não é apenas encontrar bugs — é a arte de entender o que seu programa realmente faz.

\n\n

Neste artigo, vamos explorar como depurar código Java como um profissional. Você aprenderá técnicas avançadas que economizarão horas de frustração e ferramentas que transformarão a depuração de uma rotina em um detetive fascinante. Vamos lá!

\n\n

1. Base: Breakpoint — seu melhor amigo

\n\n

Vamos começar pelo mais óbvio: pontos de parada. Mas não pule — você ficará surpreso com quantos desenvolvedores usam apenas 10% de suas capacidades.

\n\n

1.1. Breakpoints lineares, condicionais e de exceção

\n\n

No IntelliJ IDEA (e outras IDEs modernas), existem três tipos básicos:

\n\n
    \n
  • Breakpoint linear — colocado em uma linha de código. O programa para toda vez que chega nela.
  • \n
  • Breakpoint condicional — você define uma condição (por exemplo, i == 5). A parada ocorrerá apenas quando a condição for verdadeira. Isso salva em loops de um milhão de iterações.
  • \n
  • Breakpoint de exceção — captura o momento em que uma exceção específica é lançada (por exemplo, NullPointerException). Não é colocado em uma linha, mas no tipo de erro. Muito útil se a exceção ocorrer em algum lugar profundo da biblioteca.
  • \n
\n\n

Exemplo de configuração de breakpoint condicional:

\n\n
public class Main {\n    public static void main(String[] args) {\n        for (int i = 0; i < 100; i++) {\n            // Colocamos breakpoint, condição: i == 42\n            System.out.println("Iteração: " + i);\n        }\n    }\n}
\n\n

Quando o loop chegar à 42ª iteração, o depurador irá parar. As outras 99 vezes ele passará sem parar.

\n\n

1.2. Watchpoints: monitorando campos

\n\n

Precisa saber quem e quando altera o valor de um campo? Use um watchpoint (ponto de observação). Você o coloca em um campo da classe, e o depurador para toda vez que esse campo é lido ou escrito.

\n\n
public class User {\n    private String name; // Colocamos watchpoint neste campo\n\n    public void setName(String name) {\n        this.name = name; // Parada aqui\n    }\n\n    public String getName() {\n        return name; // Ou aqui, se o modo de leitura estiver ativado\n    }\n}
\n\n

2. Ferramentas de depuração Java: o que deve estar no arsenal

\n\n

A boa notícia: você não precisa de utilitários de terceiros se tiver uma IDE moderna. Mas conhecer suas capacidades é obrigatório.

\n\n

2.1. Depurador do IntelliJ IDEA: recursos ocultos

\n\n

Aqui estão algumas funções que transformam a depuração de código Java em um prazer:

\n\n
    \n
  • Drop Frame (botão em forma de seta para baixo) — permite "voltar" a execução para o método anterior na pilha de chamadas. Você não altera o estado do programa, mas pode percorrer a lógica novamente. Indispensável quando você perdeu a etapa necessária.
  • \n
  • Evaluate Expression (Alt+F8) — você pode executar qualquer código diretamente durante a depuração. Quer saber o que list.size() retorna? Ou até alterar o valor de uma variável em tempo real? Por favor.
  • \n
  • Hot Swap (substituição a quente de código) — alterou um método e quer testar sem reiniciar? O IntelliJ IDEA suporta substituição a quente de classes. Não funciona para todas as alterações (por exemplo, não é possível adicionar um novo campo), mas para o corpo do método é ideal.
  • \n
\n\n

2.2. Alternativas: Eclipse, VS Code e JDB

\n\n

Se você usa Eclipse, existem funções análogas: Display view para expressões e Drop to Frame. No VS Code com Java Ex

Blogs

Book Recommendations