Olá desenvolvedores, hoje aprenderemos sobre as teclas de funções e breakpoints. No tutorial anterior ressaltamos a importância da depuração para agilizar o processo de encontrar erros e em seu código. Além de evidenciar o quanto o debug faz parte do dia a dia do programador.
Em “debug: breve introdução”, falamos que a escolha da IDE pode ser um complicador ou um facilitador no momento de debugar seu código. No entanto, o Eclipse, sendo uma das IDEs mais poderosas do mercado torna este processo relativamente simples. Mas antes de falarmos de como a ferramenta trabalha, que tal conhecermos algumas teclas de atalho e suas funções dentro do processo de depuração?
- F5 – A tecla de função F5 possibilita que percorramos o código linha a linha. Mas se a próxima linha compreender um método, ela entrará no código associado. Entrando no método, você deverá utilizar a tecla F6 para percorrer as linhas.
- F6 – A tecla de função F6 possibilita que percorramos o código linha a linha, e apenas isso.
- F7 – A tecla de função F7 é usada para sair do método atual, isto é, mostrando o método que fez a chamada para o código que está sendo debugado.
- F8 – A tecla de função F8 seguirá para o próximo ponto de parada, o breakpoint, mas se nenhum for encontrado, o programa seguirá seu fluxo de execução normal.
- A combinação de teclas [CTRL + SHIFT + I] exibirá o valor de uma variável ou expressão selecionada.
Aprendendo a utilizar essas teclas e combinações, você estará pronto para tirar o máximo de proveito da depuração do seu código.
DEBUG NA PRÁTICA
O primeiro passo para começar a debugar é conhecendo os breakpoints, que consistem no ponto de partida. É a partir do posicionamento deles que iniciamos o processo de debug. O breakpoint é esta sinalização posicionada na linha onde desejamos que o processo de depuração tenha início.
Outros pontos do código que julgar importante também poderão ser sinalizados. Para adicioná-lo basta clicar duas vezes na direção da linha que deseja adicioná-lo. Ou poderá ainda, depois de clicar sobre a linha onde deseja adicionar o breakpoint, no menu ir em Run -> Toggle Breakpoint. Uma terceira opção consiste em clicar com o botão o direito onde deseja adicioná-lo, escolhendo a opção Toggle Breakpoint.
Depois de adicionar o breakpoint, e mandar executar seu programa, perceba que o Java parará ao encontrar o ponto de parada. Mas atenção, a execução deverá ser feita clicando sobre o ícone do debug na barra de ferramentas. O ícone se assemelha a uma “baratinha”. Assim ele identificará os breakpoints e parará sempre que encontrar algum ponto de parada.
Outra forma de iniciar o debug é clicando com o botão direito sobre a classe e escolher a opção Debug As => Java Aplication. Agora o que você precisa fazer é testar, experimentar. A partir do momento em que tomou ciência das teclas de funções e o que elas fazem, não há outro caminho a percorrer se não o de fazer, testar, experimentar.
DEPURANDO O CÓDIGO
Embora não exista outra forma de fazer, senão fazendo, tentarei auxiliá-lo o máximo possível de forma a simplificar esta experiência para você. Escolha o ponto de partida de onde deseja começar a depurar o código, e insira o breakpoint. E posicione outros pontos de parada em outras partes do código também. Feito isso inicie o debug.
O código seguirá o fluxo normal de processamento até encontrar o ponto de parada. No instante em que encontrar o primeiro breakpoint, a linha em questão será destacada como mostra a imagem abaixo:
Uma característica importante do Eclipse IDE é a possibilidade de poder inspecionar o que está acima do ponto de parada. Para isso basta posicionar o mouse sobre, por exemplo, a variável que deseja inspecionar. Dessa forma poderemos analisar o que há dentro da variável login.
Assim é possível verificar que o login escolhido é “admin”. O mesmo procedimento poderá ser aplicado a “senha”, e assim descobrir a senha “setada”. Selecionado a variável e utilizando a combinação das teclas CTRL + SHIFT + I, é possível abrir uma janela que informa mais detalhes sobre o código.
O Eclipse nos permite também a partir do debug selecionar toda uma expressão para ver o que ela retorna.
E como selecionamos uma expressão booleana, seu retorno deverá ser um false ou um true. Depois de selecionar a expressão utilize a mesma combinação de teclas.
DETALHANDO AS FUNÇÕES
Mas suponhamos que você queira destrinchar esta função e saber o que cada método está fazendo. O que deverá fazer é “rodar” o debug novamente, selecionar o método que deseja acessar, no caso do exemplo somente o “autenticar()”, e clicar na tecla de função F5 para entrarmos no método.
Note que o primeiro método qual ele entrará, será, neste caso, a “classe Secretario”, onde são passados os argumentos. Para sair e voltar ao ponto de parada, utilize a tecla de função F7. Mas se você desejar percorrer o método utilize a tecla F6. Se a tecla F5 o levar a classe do próprio Java, facilmente identificada por meio do “.class”, basta recorrer a tecla F5 novamente ou a F7.
E se pressionar o F5 novamente ele irá para a FuncaoAutenticacao, fazendo o processo de dentro pra fora. Isto é, os métodos serão percorridos do ponto mais interno para o mais externo.
SOLUCIONANDO UM “SOURCE NOT FOUND”
Ao tentar acessar o método a partir da tecla de função F5, um erro de “Source not found” como o mostrado na imagem abaixo poderá ocorrer.
Para resolver um “Source not found”, existem dois caminhos. O primeiro consiste em configurar no projeto o JDK ao invés do JRE, e sinceramente, não gosto muito dessa solução. O segundo, e o qual adotaremos consiste em instalar algum plugin Decompiler.
Mas primeiramente tente a partir da opção de menu Window => Preferences, acesse a janela Preferences e siga o caminho Java => Debug => Step Filtering, onde você configurará conforme mostra a imagem abaixo:
Mas esta solução pode não funcionar para você, então será necessário instalar um plugin decompiler.
Um plugin decompiler é uma ferramenta para descompilar e analisar o “código de bytes” do Java a partir da sua versão 5, caso do Enhanced Class Decompiler. Este por sua vez, permite que os desenvolvedores Java depurem arquivos de classe sem o código fonte diretamente.
Ele também se integra ao editor de classes eclipse plugin m2e, suporta Javadoc, pesquisa de referência, anexação de código-fonte da biblioteca, visualização de código de bytes e a sintaxe da expressão lambda do JDK8. Para proceder com a instalação do plugin, iremos acessar o Marketplace do Eclipse.
Para acessar o Marketplace, no Eclipse IDE vá em Help => Eclipse Marketplace… E digite “Enhanced Class Decompiler” no campo de busca, e clique em Go. Após a busca clique em “install” e proceda com a instalação.
Após a instalação vá em Window => Preferences => General => Editors File Associations e selecione a opção Class Decompiler Viewer setando-a como default. Para então associá-la aos tipos de arquivos .class e .class without source, como exemplifica a imagem.
EM POUCAS PALAVRAS
Mesmo quando não há um erro, é interessante principalmente para quem começa a percorrer este caminho da programação, debugar o código. O que serve também para entender o que está acontecendo, e não apenas para corrigir erros. Debugar e inserir os dados, analisando cada iteração cada etapa do processamento é importante. Este sem dúvida é um exercício muito útil. E vai possibilitá-lo a entender cada vez mais a técnica de debug.
Lembrando que você pode inspecionar cada variável e cada objeto apenas posicionando o mouse sobre ele.
A depuração do código faz parte do dia a dia do programador, com ojá mencionei. Visto que inúmeras vezes você terá que lidar com código altamente complexo e/ou que não foi desenvolvido por você. Dessa forma para entender o que está sendo processado e onde, o caminho não é outro senão o debug do código. Então é isso, fico por aqui, nos vemos no próximo tutorial.