SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Debugando com Java
F6, F6, F6, F5, F6, F7,F6, AHA!, F8
Sobre
Eu debugo quase todo dia… sou um Software Maintenance Engineer
ou é pago para resolver problemas que ninguém mais gostaria de resolver em
ambientes complexos e de alto risco (troubleshoot e resolução de bugs de
aplicações em produção)
AMO (sem sarcasmo) meu trabalho!
O que é debugar
Técnicas para tirar bugs (problemas) da sua aplicação
A técnica mais famosa é acompanhar cada linha de código da aplicação, mas
antes disso precisamos ISOLAR o problema
Quando sai da máquina do computador (um ambiente controlado), temos
muitas variáveis que precisamos ser descartadas antes de chegarmos no
código - para isso temos muitas outras técnicas (aumentar nível de logging,
simular ambientes - DOCKER é um grande aliado), mas isso fica para outro
dia!
Hoje vamos focar em acompanhar a execução linha a linha de um programa
Java
Como debugamos um programa Java
Executamos o programa em modo debug e configuramos pontos de
parada(breakpoints - for ENGRISH lovers)
Durante essa arte maravilhosa também podemos ver como está cada variável
do escopo e variáveis que aquele escopo tem visibilidade
Para isso precisamos aprender a debugar com uma IDE ou utilizar o jdb
… errr vamos usar IDE mesmo
Como debugar usando o Eclipse
Se você tem seu código rodando no Eclipse é tudo muito mais simples, você
adiciona breakpoints e executa o programa com F11 ou clicando no bugzinho:
Durante o debug você pode ver e alterar valores de variáveis do programa!
Para adicionar breakpoints você faz um clique duplo na coluna esquerda do
código:
Ao adicionar um breakpoint você pode clicar com o botão direito e desabilitar
ele ou remover completamente.
Vendo e alterando variáveis durante a execução
Veja a aba variáveis, lá podemos alterar valores. Isso é disponível na perspectiva de debug, que é aberta
automaticamente quando a sessão de debug começa
Controlando a execução do debugger
Você pode usar os botões do painel
Ou controlar com botões com os seguintes comandos:
● F5: Ao iniciar o modo debug você pode avançar linha a linha do código e
entrar em cada chamada de método
● F6: Avança linha a linha, mas não entra em chamadas de métodos
● F7: Volta para o método que chamou o método atual
● F8: Continua a execução do programa até o próximo breakpoint
Indo além com o debugger
Com a ferramenta de debug do Eclipse é também possível:
● Observar pequenos pedaços de código que você escreve (Watch
Expression)
● Colocar um breakpoint no lançamento de exceção (o código só é parado
quando uma exceção é lançada)
● Debugar múltiplos servidores remotamente!
Debugando código de terceiros
Certifique-se que no debugger você adicionou o código de terceiro nas
configurações de debug ou de aplicações remotas. Dica: configure o maven
para baixar código, pois você poderá usar no debug depois
Como debugar meu código dentro de um servidor?
É possível debugar aplicações remota desde que você tenha o código e tenha
acesso a uma porta de debug!
Anexar o código das APIs é muito importante para o DEBUG.
Se o servidor for local você simplesmente deve iniciar ele em modo debug
também (como fizemos para a aplicação local Java)
Vamos Debugar!
Demos:
● Básico
● Algoritmos de ordenação (sempre interessante)
● Aplicação no servidor
● Debug Remoto
E se tiver um problema e não tiver acesso?
Se você não tem acesso a um ambiente para debug uma das melhores forma
é utilizar Byteman! Com ele você escreve scripts que podem ler e modificar
variáveis em tempo de execução inclusive em ambiente de produção
Mas…. Outro dia falamos sobre Byteman!
Obrigado
github.com/jesuino << O único lugar que você não vai me odiar por falar de
política ;-)

Mais conteúdo relacionado

Mais procurados

Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIVinícius Thiengo
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalhoHigor Klecyus
 
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...João Júnior
 
Leitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXingLeitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXingVinícius Thiengo
 
Ajuste de Texto com Autosizing TextView - Android Jetpack
Ajuste de Texto com Autosizing TextView - Android JetpackAjuste de Texto com Autosizing TextView - Android Jetpack
Ajuste de Texto com Autosizing TextView - Android JetpackVinícius Thiengo
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?Samuel Lourenço
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de SoftwareMaurício Aniche
 
Poo1 aula 3 - java - comentários instruções e blocos-palavras chave
Poo1   aula 3 - java - comentários instruções e blocos-palavras chavePoo1   aula 3 - java - comentários instruções e blocos-palavras chave
Poo1 aula 3 - java - comentários instruções e blocos-palavras chaveDenis Sobrenome
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensivaKayo Rayner
 
Depurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIDepurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIJefferson Girão
 
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Jefferson Girão
 
Teste de aplicações web com selenium
Teste de aplicações web com seleniumTeste de aplicações web com selenium
Teste de aplicações web com seleniumMayron Cachina
 

Mais procurados (19)

Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
 
Comentários No Java
Comentários No JavaComentários No Java
Comentários No Java
 
Tratamento de excees slide trabalho
Tratamento de excees slide trabalhoTratamento de excees slide trabalho
Tratamento de excees slide trabalho
 
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
2° Workshop de Testes em Uberlândia - Treinamento em Automação de Testes com ...
 
Leitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXingLeitor de Códigos no Android com Barcode Scanner API - ZXing
Leitor de Códigos no Android com Barcode Scanner API - ZXing
 
Ajuste de Texto com Autosizing TextView - Android Jetpack
Ajuste de Texto com Autosizing TextView - Android JetpackAjuste de Texto com Autosizing TextView - Android Jetpack
Ajuste de Texto com Autosizing TextView - Android Jetpack
 
Por que automatizar testes de software?
Por que automatizar testes de software?Por que automatizar testes de software?
Por que automatizar testes de software?
 
Selenium
SeleniumSelenium
Selenium
 
Testes Automatizados de Software
Testes Automatizados de SoftwareTestes Automatizados de Software
Testes Automatizados de Software
 
Poo1 aula 3 - java - comentários instruções e blocos-palavras chave
Poo1   aula 3 - java - comentários instruções e blocos-palavras chavePoo1   aula 3 - java - comentários instruções e blocos-palavras chave
Poo1 aula 3 - java - comentários instruções e blocos-palavras chave
 
Programação defensiva
Programação defensivaProgramação defensiva
Programação defensiva
 
Montagem
MontagemMontagem
Montagem
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
Depurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP IIDepurando Aplicacoes PHP com XDebug e FirePHP II
Depurando Aplicacoes PHP com XDebug e FirePHP II
 
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
 
Gisele
GiseleGisele
Gisele
 
Aula 03
Aula 03Aula 03
Aula 03
 
Teste de aplicações web com selenium
Teste de aplicações web com seleniumTeste de aplicações web com selenium
Teste de aplicações web com selenium
 

Semelhante a Básico sobre Debugging com Java

Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixCris Fidelix
 
Aula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixAula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixCris Fidelix
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Produtividade com Eclipse IDE
Produtividade com Eclipse IDEProdutividade com Eclipse IDE
Produtividade com Eclipse IDEAnderson Silveira
 
Programação de Microprocessadores
Programação de MicroprocessadoresProgramação de Microprocessadores
Programação de MicroprocessadoresDiogo Silva
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1Marcio Pinto
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programaçãoSandro Lopes
 
#1 - O que é Teste Unitário
#1 - O que é Teste Unitário#1 - O que é Teste Unitário
#1 - O que é Teste UnitárioMaycon Pires
 
Dez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugsDez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugsPaulo Mattos
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interaçãoHumberto Cepep
 
Apostila de programacao java
Apostila de programacao javaApostila de programacao java
Apostila de programacao javaCleber Costa
 
Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoProfessor-David Remigio
 

Semelhante a Básico sobre Debugging com Java (20)

Debugging node
Debugging nodeDebugging node
Debugging node
 
Aula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane FidelixAula 1 - Java - Prof.ª Cristiane Fidelix
Aula 1 - Java - Prof.ª Cristiane Fidelix
 
Aula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane FidelixAula1- Java PRof.ª Cristiane Fidelix
Aula1- Java PRof.ª Cristiane Fidelix
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Manual robotec
Manual robotecManual robotec
Manual robotec
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
BDD-NamoroOn
BDD-NamoroOnBDD-NamoroOn
BDD-NamoroOn
 
Produtividade com Eclipse IDE
Produtividade com Eclipse IDEProdutividade com Eclipse IDE
Produtividade com Eclipse IDE
 
Programação de Microprocessadores
Programação de MicroprocessadoresProgramação de Microprocessadores
Programação de Microprocessadores
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Manual lab ino
Manual lab inoManual lab ino
Manual lab ino
 
Linguagem de programação
Linguagem de programaçãoLinguagem de programação
Linguagem de programação
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
#1 - O que é Teste Unitário
#1 - O que é Teste Unitário#1 - O que é Teste Unitário
#1 - O que é Teste Unitário
 
Apostila s7
Apostila s7Apostila s7
Apostila s7
 
Macro br
Macro brMacro br
Macro br
 
Dez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugsDez dicas para_acompanhamento_de_bugs
Dez dicas para_acompanhamento_de_bugs
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 
Apostila de programacao java
Apostila de programacao javaApostila de programacao java
Apostila de programacao java
 
Lógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introduçãoLógica de Programção - Módulo 1 - algoritmos-introdução
Lógica de Programção - Módulo 1 - algoritmos-introdução
 

Mais de jesuinoPower

Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOakjesuinoPower
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPjesuinoPower
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPjesuinoPower
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBjesuinoPower
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasjesuinoPower
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parecejesuinoPower
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavajesuinoPower
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXjesuinoPower
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0jesuinoPower
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012jesuinoPower
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFXjesuinoPower
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visagejesuinoPower
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com JavajesuinoPower
 

Mais de jesuinoPower (14)

Introdução ao LiveOak
Introdução ao LiveOakIntrodução ao LiveOak
Introdução ao LiveOak
 
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SPBoas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
Boas práticas na criação de aplicações sérias com JavaFX - TDC 2014 SP
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
 
JavaFX 8, Collections e Lambdas
JavaFX 8, Collections e LambdasJavaFX 8, Collections e Lambdas
JavaFX 8, Collections e Lambdas
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parece
 
JavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma JavaJavaFX: A nova biblioteca gráfica da plataforma Java
JavaFX: A nova biblioteca gráfica da plataforma Java
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
Rest web services com Java
Rest web services com JavaRest web services com Java
Rest web services com Java
 

Básico sobre Debugging com Java

  • 1. Debugando com Java F6, F6, F6, F5, F6, F7,F6, AHA!, F8
  • 2. Sobre Eu debugo quase todo dia… sou um Software Maintenance Engineer ou é pago para resolver problemas que ninguém mais gostaria de resolver em ambientes complexos e de alto risco (troubleshoot e resolução de bugs de aplicações em produção) AMO (sem sarcasmo) meu trabalho!
  • 3. O que é debugar Técnicas para tirar bugs (problemas) da sua aplicação A técnica mais famosa é acompanhar cada linha de código da aplicação, mas antes disso precisamos ISOLAR o problema Quando sai da máquina do computador (um ambiente controlado), temos muitas variáveis que precisamos ser descartadas antes de chegarmos no código - para isso temos muitas outras técnicas (aumentar nível de logging, simular ambientes - DOCKER é um grande aliado), mas isso fica para outro dia! Hoje vamos focar em acompanhar a execução linha a linha de um programa Java
  • 4. Como debugamos um programa Java Executamos o programa em modo debug e configuramos pontos de parada(breakpoints - for ENGRISH lovers) Durante essa arte maravilhosa também podemos ver como está cada variável do escopo e variáveis que aquele escopo tem visibilidade Para isso precisamos aprender a debugar com uma IDE ou utilizar o jdb … errr vamos usar IDE mesmo
  • 5. Como debugar usando o Eclipse Se você tem seu código rodando no Eclipse é tudo muito mais simples, você adiciona breakpoints e executa o programa com F11 ou clicando no bugzinho: Durante o debug você pode ver e alterar valores de variáveis do programa! Para adicionar breakpoints você faz um clique duplo na coluna esquerda do código: Ao adicionar um breakpoint você pode clicar com o botão direito e desabilitar ele ou remover completamente.
  • 6. Vendo e alterando variáveis durante a execução Veja a aba variáveis, lá podemos alterar valores. Isso é disponível na perspectiva de debug, que é aberta automaticamente quando a sessão de debug começa
  • 7. Controlando a execução do debugger Você pode usar os botões do painel Ou controlar com botões com os seguintes comandos: ● F5: Ao iniciar o modo debug você pode avançar linha a linha do código e entrar em cada chamada de método ● F6: Avança linha a linha, mas não entra em chamadas de métodos ● F7: Volta para o método que chamou o método atual ● F8: Continua a execução do programa até o próximo breakpoint
  • 8. Indo além com o debugger Com a ferramenta de debug do Eclipse é também possível: ● Observar pequenos pedaços de código que você escreve (Watch Expression) ● Colocar um breakpoint no lançamento de exceção (o código só é parado quando uma exceção é lançada) ● Debugar múltiplos servidores remotamente!
  • 9. Debugando código de terceiros Certifique-se que no debugger você adicionou o código de terceiro nas configurações de debug ou de aplicações remotas. Dica: configure o maven para baixar código, pois você poderá usar no debug depois
  • 10. Como debugar meu código dentro de um servidor? É possível debugar aplicações remota desde que você tenha o código e tenha acesso a uma porta de debug! Anexar o código das APIs é muito importante para o DEBUG. Se o servidor for local você simplesmente deve iniciar ele em modo debug também (como fizemos para a aplicação local Java)
  • 11. Vamos Debugar! Demos: ● Básico ● Algoritmos de ordenação (sempre interessante) ● Aplicação no servidor ● Debug Remoto
  • 12. E se tiver um problema e não tiver acesso? Se você não tem acesso a um ambiente para debug uma das melhores forma é utilizar Byteman! Com ele você escreve scripts que podem ler e modificar variáveis em tempo de execução inclusive em ambiente de produção Mas…. Outro dia falamos sobre Byteman!
  • 13. Obrigado github.com/jesuino << O único lugar que você não vai me odiar por falar de política ;-)