Depuração de código
Prof. Leonardo Soares e Silva
Problema
public double somarIdades(){
Pessoa leonardo = Database.getPessoaFromDb(78);
Pessoa joaquim = null;
Double idade ...
Problema
public double somarIdades(){
Pessoa leonardo = Database.getPessoaFromDb(78);
Pessoa joaquim = Database.getPessoaF...
Problema
public ControleCurso() {
curso = new Curso();
selecionado = null;
dao = new CursoDao();
List<Aluno> listaAlunos =...
Problemas

Sabemos onde estão nossos erros, pois o Java nos avisa
Estes avisos, para quem tem pouca experiência, podem ser...
Como resolver

Sabendo os valores das variáveis no momento de
execução
Saber o comportamento de nosso código
Entendendo o ...
I - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.get...
I - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.get...
I - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.get...
II - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.ge...
I - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.get...
I - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.get...
I - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.get...
I - Simulação de execução de um
código
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = Hibernate.get...
Depuração de código
Depuração de código
Como funciona a depuração
Corrigir o
problema

Executar o
software

Identificar
onde está o
erro

Localizar o
problema

Ir...
Conceitos importantes

Ponto de parada (break point)
Passar dentro (Step in)
Passar fora (Step out)
Passar por fora (Step ...
Ponto de parada

Especifica onde queremos que a execução do nosso
software pare
A partir deste momento iremos depurar noss...
Depuração de código
Depuração do código

Uma vez a execução do software parada, passamos a
executá-lo linha a linha
Na maioria das IDEs a linh...
Linha em execução durante a
depuração
Step in

Visualiza a execução de um método invocado
public Pessoa getPessoaFromDb( int chavePrimaria ){
Session session = ...
Step in

Visualiza a execução de um método invocado
public Session getSession(){
…
…
}
Step out

Sai do passo a passo da execução de um método
entrado através do Step in
Step over

Ignoramos o passo a passo de métodos que são
invocados
public Pessoa getPessoaFromDb( int chavePrimaria ){
Sess...
Step over

Ignoramos o passo a passo de métodos que são
invocados
public Pessoa getPessoaFromDb( int chavePrimaria ){
Sess...
Continue

Retorna a execução contínua do software
Exemplo de depuração
Exercício

Implementem os códigos e verifiquem o que ocorre
Exercício 01
public class Pessoa {
String cpf;
// gets e setters
}
public static void comparar(){
Pessoa leonardo = new Pe...
Exercício 02
public static void main(String[] args) {
String nomes[] = new String[3];
nomes[1] = "disciplina";
nomes[2] = ...
Considerações sobre a depuração

A utilizamos apenas quando há problemas ou dúvidas
no código
Passado este momento executa...
Exercício para casa

Identifiquem como funciona a depuração no Eclipse
Explicação oral na próxima aula sobre o
funcionamen...
Próximos SlideShares
Carregando em…5
×

Depuração de software

876 visualizações

Publicada em

Aula ministrada no IFPE - Campus Garanhuns na disciplina de teste de software. Abordar conceitos e a prática no uso da depuração de código de software (debug) para resolução de problemas.

Publicada em: Educação
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
876
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
13
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Qualerropodeocorrer?
  • Écomoassistiraonossocódigosendoexecutado
  • Depuração de software

    1. 1. Depuração de código Prof. Leonardo Soares e Silva
    2. 2. Problema public double somarIdades(){ Pessoa leonardo = Database.getPessoaFromDb(78); Pessoa joaquim = null; Double idade = leonardo.getIdade() + joaquim.getIdade(); return idade; } 1) Qual erro pode ocorrer? R - NullPointerException
    3. 3. Problema public double somarIdades(){ Pessoa leonardo = Database.getPessoaFromDb(78); Pessoa joaquim = Database.getPessoaFromDb(79); Double idade = leonardo.getIdade() + joaquim.getIdade(); return idade; } public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; }
    4. 4. Problema public ControleCurso() { curso = new Curso(); selecionado = null; dao = new CursoDao(); List<Aluno> listaAlunos = new ArrayList<Aluno>(); try { for (int i = 0; i < alunoDao.recuperarTodos().size(); i++) { Aluno obj = alunoDao.recuperarTodos().get(i); if (obj.getAtivo() == 1) { listaAlunos.add(obj); } } } catch (Exception e) { FacesContext ctx = FacesContext.getCurrentInstance(); ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ocorreu um erro ao obter a lista de Cursos.", "")); } alunosAtivos = new ArrayList<Aluno>(listaAlunos); List<Servidor> listaServidores = new ArrayList<Servidor>(); try { for (int i = 0; i < servidorDao.recuperarTodos().size(); i++) { Servidor obj = servidorDao.recuperarTodos().get(i); if (obj.getAtivo() == 1) { listaServidores.add(obj); } } } catch (Exception e) { FacesContext ctx = FacesContext.getCurrentInstance();
    5. 5. Problemas Sabemos onde estão nossos erros, pois o Java nos avisa Estes avisos, para quem tem pouca experiência, podem ser difíceis de interpretar Além disto não sabemos exatamente o que levou eles a ocorrerem
    6. 6. Como resolver Sabendo os valores das variáveis no momento de execução Saber o comportamento de nosso código Entendendo o que está acontecendo
    7. 7. I - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; }
    8. 8. I - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; } Session = null
    9. 9. I - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; }
    10. 10. II - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; }
    11. 11. I - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; }
    12. 12. I - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; } Session != null
    13. 13. I - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; }
    14. 14. I - Simulação de execução de um código public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; } P = Objeto Pessoa
    15. 15. Depuração de código
    16. 16. Depuração de código
    17. 17. Como funciona a depuração Corrigir o problema Executar o software Identificar onde está o erro Localizar o problema Ir passo a passo durante a execução do código Marcar o trecho do código que queremos “assistir”
    18. 18. Conceitos importantes Ponto de parada (break point) Passar dentro (Step in) Passar fora (Step out) Passar por fora (Step over) Continuar (Continue)
    19. 19. Ponto de parada Especifica onde queremos que a execução do nosso software pare A partir deste momento iremos depurar nossa aplicação Na maioria das IDEs é destacada com uma linha vermelha Podemos colocar quantos quiser
    20. 20. Depuração de código
    21. 21. Depuração do código Uma vez a execução do software parada, passamos a executá-lo linha a linha Na maioria das IDEs a linha em execução é marcada com a cor verde É possível entrar em métodos que são invocados Sair deles Passar por eles
    22. 22. Linha em execução durante a depuração
    23. 23. Step in Visualiza a execução de um método invocado public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p; }
    24. 24. Step in Visualiza a execução de um método invocado public Session getSession(){ … … }
    25. 25. Step out Sai do passo a passo da execução de um método entrado através do Step in
    26. 26. Step over Ignoramos o passo a passo de métodos que são invocados public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p;
    27. 27. Step over Ignoramos o passo a passo de métodos que são invocados public Pessoa getPessoaFromDb( int chavePrimaria ){ Session session = Hibernate.getSession(); if( session == null) return null; Pessoa p = PessoaDao.loadFromPrimaryKey(chavePrimaria); return p;
    28. 28. Continue Retorna a execução contínua do software
    29. 29. Exemplo de depuração
    30. 30. Exercício Implementem os códigos e verifiquem o que ocorre
    31. 31. Exercício 01 public class Pessoa { String cpf; // gets e setters } public static void comparar(){ Pessoa leonardo = new Pessoa(“12345”); Pessoa leo = new Pessoa(“12345”); if( leonardo == leo ){ System.out.println("Iguais"); } System.out.println(”Diferentes"); }
    32. 32. Exercício 02 public static void main(String[] args) { String nomes[] = new String[3]; nomes[1] = "disciplina"; nomes[2] = "teste"; nomes[3] = "software"; }
    33. 33. Considerações sobre a depuração A utilizamos apenas quando há problemas ou dúvidas no código Passado este momento executamos nosso código normalmente
    34. 34. Exercício para casa Identifiquem como funciona a depuração no Eclipse Explicação oral na próxima aula sobre o funcionamento e conceitos da depuração

    ×