1
Tutorial de depuração do Netbeans
João Gabriel Queiroz de Araújo2 Sumário
1. Oque é o depurador (debugger)... 3
2. Adicionando breakpoints... 3
2.1. Tipos de breakpoint... 3
2.1.1. Tipos de breakpoint – Ponto de interrupção da classe... 4
2.1.2. Tipos de breakpoint – Ponto de interrupção do campo... 4
2.1.3. Tipos de breakpoint – Ponto de interrupção do método... 5
3. Observadores... 5
3.1. Utilizando um Observador – Variáveis... 6
3.2. Utilizando um Observador – Expressões... 6
4. Iniciando o processo de depuração... 7
3 1. O que é o depurador (debugger).
O depurador é uma ferramenta que auxilia o programador a encontrar erros lógicos em um programa. Esse tipo de erro não é tão trivial de ser descoberto quanto os erros sintáticos e de execução, pois o compilador não retorna nenhuma mensagem de erro, já que o programa executou normalmente.
2. Adicionando breakpoints.
Para iniciar a depuração de um programa é necessário que se coloque um breakpoint no local onde se deseja testar. Os breakpoints são sinais que indicam onde o depurador deve suspender a execução do programa, a fim de verificar os valores de variáveis e expressões naquele ponto. No Netbeans, para adicionar um breakpoint basta clicar com o botão esquerdo na linha desejada, como mostra a figura 1.
Figura 1: Breakpoint no Netbeans.
2.1. Tipos de breakpoint
Os breakpoints podem ser de tipos diferentes, ponto de interrupção da classe, ponto de interrupção do campo, ponto de interrupção do método. Seu tipo será definido pelo local que ele foi marcado.
4 2.1.1. Tipos de breakpoint – Ponto de interrupção da classe
Quando marcado no cabeçalho da classe é chamado de ponto de interrupção da classe, nesse caso mostrará dados relacionados à construção da classe. A figura abaixo mostra exemplos de dados que podem ser observados.
Figura 3: Ponto de interrupção da classe.
Quando marcado na declaração de alguma variável é chamado de ponto de interrupção de campo, nesse caso mostrará o comportamento dessa variável ao longo dos métodos, os quais fazem uso da mesma.
Além da alteração de valores da variável marcada, também será mostrado alterações de valores de variáveis que se relacionam direto ou indiretamente com a variável escolhida.
Uma importante observação é: sempre que um campo ou um método for marcado por um breakpoint, as variáveis que são declaradas terão suas alterações de valores exibidas na saída do depurador. Quando qualquer variável declarada for inicializada no construtor seu valor inicial será o inicializado.
2.1.2. Tipos de breakpoint – Ponto de interrupção do campo.
Nesse caso somente a variável ‘d’ foi marcada, porém os valores de ‘a’, ‘b’ e ‘i’ são mostrados. ‘a’ e ‘b’ por serem variáveis declaradas e ‘i’ por estar diretamente ligada a variação de valor de ‘d’.
5 2.1.3. Tipos de breakpoint – Ponto de interrupção do método.
Quando marcado no cabeçalho de um método o breakpoint é chamado de ponto de interrupção do método, nesse caso mostrara os valores que o método está recebendo.
Quando na sua declaração um método exigir passagem de parâmetros, os valores passados serão mostrados na saída do depurador. Quando um método não exigir parâmetros, nada será mostrado.
No caso mostrado abaixo dois métodos foram marcados, o primeiro recebe como parâmetro ‘int a’ e ‘int b’, já o segundo nada recebe.
A saída do depurador mostrará os valores de ‘a’ e ‘b’ que chegam, e no segundo método não mostrará nada. Ressaltando que em todos os casos mostrará os valores das variáveis declaradas, que estão dentro de ‘this’.
Figura 5: Ponto de interrupção do método.
3. Observadores.
Observadores (watches) são utilizados para verificar mudança nos valores das variáveis e das expressões.
Funcionam de maneira mais especifica, pois pode escolher qual variável será observada, além disso, diferente do breakpoint, o observador pode mostrar valores de expressões.
Existem três maneiras diferentes de inserir um observador no Netbeans. A primeira é clicando com o botão direito no editor do IDE e selecionando a opção ‘Novo Observador...’ a segunda pelo atalho ‘Ctrl+Shift+f7’.
6 A terceira maneira é utilizando o menu ‘depurar’, localizado na parte superior do NetBeans, além de encontrar ‘novo observador’, será encontradas todas as outras opções relacionadas com depuração.
Figura 7: Menu Depurar do Netbeans.
3.1. Utilizando um Observador – Variáveis.
Para colocar um observador em uma variável basta adicionar o observador e digitar o nome da variável desejada, como foi declarado.
Somente o observador não garante que ocorra a depuração, ele apenas verificará o valor de uma variável ou expressão, para que ocorra a depuração é obrigatório colocar um breakpoint.
As imagens mostram a inserção de um observador para a variável ‘a’, onde a imagem da esquerda é o momento que o observador é associado a uma variável e a imagem da direita, mostra a saída do observador após a depuração.
Figura 8: Utilização de um observador para checagem de variáveis.
3.2. Utilizando um Observador – Expressões.
Para colocar um observador em uma expressão basta adicionar o observador e digitar expressão desejada, ou ainda selecionar primeiramente a expressão e depois clicar em inserir novo observador. Lembrando que as variáveis utilizadas na expressão devem existir.
7
Figura 9: Utilização de um observador para a verificação de expressões.
4. Iniciando o processo de depuração.
Uma vez colocado os breakpoints nos locais desejados e adicionados os observadores às variáveis desejadas, basta clicar na opção de ‘depurar projeto principal’ para iniciar o processo, ou então usar o atalho ‘ctrl + f5’.
O compilador depura um projeto passo a passo, ou seja, parando em cada breakpoint, assim é possível um melhor acompanhamento do processo de depuração. Caso um breakpoint esteja em um laço, a depuração só sairá desse breakpoint quando o laço for quebrado.
Figura 10: Inicio do processo de depuração.
Uma vez iniciado o processo de depuração, existem funções que tem por objetivo facilitar o entendimento bem como acompanhar o processo.
A primeira função apresentada é a ‘Continuar’, essa função faz com que a depuração vá para o próximo passo, ou seja, o próximo breakpoint, continuando assim o processo de depuração.
Figura 11: Botão continuar do Netbeans.
‘Passar Sobre’ pula pala a próxima linha de execução, caso a linha seja uma chamada de método executa sem entrar no método, exceto se o breakpoint estiver nesse método. Caso o breakpoint esteja em um laço o ‘Passar Sobre’ ira executar linha a linha ate sair do laço.
Figura 12: Botão “Passar sobre”
‘Passar Sobre a expressão’ assim como ‘passar sobre’ pula pala a próxima linha de execução, porém caso a linha seja uma chamada de método essa função mostra os
8 parâmetros passado para o método, caso existam, e também o que foi retornado pelo método, caso este tenha algum tipo de retorno.
Figura 13: Botão ‘Passar sobre expressão’
‘Passa dentro’ é a mais ampla de todas as funções, essa função executa uma linha de código, caso essa linha for uma chamada de método, ela pula para a primeira linha do método e para. Quando executada dentro de um método ela executa linha por linha, independente de ter ou não um breakpoint naquele método. Em caso de laços executa até sair do laço.
Figura 14: Botão ‘Passar dentro’
‘Passa Fora’ é a mais objetiva e limitada de todas as funções, executa uma linha de código, no entanto, entra apenas nos métodos os quais contém breakpoints, indo diretamente para o mesmo e retornando para o chamador do método. Mesmo com o breakpoint estando em um laço essa função não percorrerá o código, ficará no breakpoint até o laço ser quebrado.
Figura 15: Botão ‘Passar fora’
‘Executar para o cursor’ executa para a linha onde o cursor está, desde que o cursor esteja em uma linha sob o escopo de uma breakpoint.
9 5. Referências. http://msdn.microsoft.com/en-US/library/350dyxd0(v=VS.80).aspx http://tswebeditor.atspace.org/doc/editor_dbg.html http://www.cs.uga.edu/~shoulami/sp2009/cs1301/tutorial/NetBeansDebuggerTutoria l/NetBeansDebuggerTutorial.htm