JDB - Introdução
A depuração é um procedimento técnico para localizar e remover bugs ou defeitos em um programa e obter os resultados esperados. A depuração inclui teste e monitoramento. É muito complexo quando as subunidades de um programa estão fortemente acopladas. Podemos depurar um programa usando as ferramentas de depuração que seguem as APIs prescritas. Um depurador permite percorrer todos os aspectos de um código, inspecionar todos os elementos e remover erros, se houver.
Técnicas de Depuração
Existem diferentes tipos de técnicas para depurar um programa Java. O método antigo de depuração é usando instruções de impressão no final de cada segmento que imprimirá as instruções de rastreamento no console. Dê uma olhada no código a seguir.
pubic class Add
{
public static void main(String ar[])
{
int a = ar[0];
system.out.println("A : " + a);
int b = ar[1];
system.out.println("B : " + b);
int c = a + b;
system.out.println("C = a + b : " + c);
}
}
Aqui, temos um programa que adiciona dois números e imprime a saída. Observe que, em cada etapa, introduzimos uma instrução print que imprime o estado do programa no console. Esta é a abordagem tradicional para depurar um programa.
Além disso, temos conceitos avançados que podem ser usados para depurar um programa, como:
- stepping
- pontos de interrupção e
- exceções ou pontos de controle.
Tipos de depuração
Podemos depurar um programa usando vários métodos:
- Usando bytecode Java (versão compilada do código Java)
- Usando comentários dentro dos programas
- Anexando classe a um programa em execução
- Depuração remota
- Depuração sob demanda
- Depuração de código otimizada
Depuradores Java
Aqui estão alguns exemplos de depuradores Java disponíveis no mercado:
- IDEs como Eclipse, Netbeans, etc. contêm seus próprios depuradores (Visual cafe, Borland, JBuilder)
- GUIs do depurador autônomo (como Jikes, depurador da plataforma Java e JProbe)
- Depurador de linha de comando (JDB da Sun)
- Bloco de notas ou controlado por VI (rastreamento de pilha)
Este tutorial cobre como usar o depurador de linha de comando, jdb.
JDB
O depurador Java (JDB) é uma ferramenta para classes Java depurar um programa na linha de comando. Ele implementa a arquitetura do depurador da plataforma Java. Ele ajuda a detectar e corrigir bugs em um programa Java usando Java Debug Interface (JDI).
JDB em JDK
A arquitetura a seguir define a função do JDB no JDK. Ele contém principalmente três unidades:
- Java Virtual Machine Tool Interface (JVM TI)
- Java Debug Wiring Pool (JDWP)
- Java Debugger Interface (JDI)
JVM TI
É uma interface de programação nativa implementada por VM. Ele fornece maneiras de inspecionar e depurar o estado do aplicativo em execução na VM. Ele permite um implementador (Implementador de VM) que pode ser incluído facilmente na arquitetura de depuração. Ele também usa um canal de terceiros chamadoJDWP para comunicação.
JDWP
Ele define o formato das informações e as solicitações que passam entre o processo de depuração e o front-end do depurador. O objetivo principal de ter um JDWP é permitir que o depurado e o depurador se comuniquem quando forem executados em VMs separadas ou em plataformas separadas.
JDI
É uma interface Java de alto nível implementada como front end. Ele define as informações variáveis no nível do código do usuário. Recomenda-se usar uma camada JDI para todo o desenvolvimento do depurador. Ele usa JDWP para comunicação com o JVM depurado.