Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Depuração Depuração
Motivação
1
20/03/2019
Depuração Depuração
Tipos de erros Tipos de erros – Sintáticos
▪ Sintáticos
▪ Erros associados ao fato de que a sintaxe da
linguagem não está sendo respeitada int main() { int main() {
Depuração Depuração
Tipos de erros – Sintáticos Tipos de erros – Semânticos
Depuração Depuração
Tipos de erros – Momento da detecção Tipos de erros – Momento da detecção
▪ Tempo de compilação
▪ Erros de sintaxe e erros semânticos estáticos int main() {
▪ Tempo de execução
a = 10;
b = 0;
▪ Erros semânticos dinâmicos e erros lógicos não x = a / b;
2
20/03/2019
Depuração Depuração
Tipos de erros – Lógica Estratégias
Depuração Depuração
Estratégias Estratégias (raiz)
▪ printf / cout
▪ “Acompanhamento” da execução do programa
▪ Selecionar pontos chave alcançados ou não, exibir
os valores de variáveis importantes
▪ Prós
▪ Simples, fácil e rápido
▪ Cons
▪ Pode prejudicar a legibilidade do código
▪ Várias compilações para diferentes testes
▪ Não é possível pausar ou controlar a execução
▪ Não é possível modificar valores de variáveis
Depuração Depuração
Exemplo 1 Exemplo 1
+ + + ⋯+ fat = fat * i;
return fat; ▪ Como descobrir o erro?
0! 1! 2! 𝑛! }
▪ fatorial(int n)
double series(double x, int n) { ▪ int fat = 1;
3
20/03/2019
Depuração GDB
Dicas gerais
GDB GDB
Exemplo – Identifique e corrija os erros!
return 0;
▪ Ferramentas auxiliares
return 0;
} }
▪ https://gdbgui.com
▪ https://www.onlinegdb.com/ $ g++ -std=c++11 -g gdbExample.cpp -o gdbExample
$ gdb gdbExample
Valgrind Valgrind
Exemplo 1 – Identifique e corrija os erros!
▪ Ferramentas auxiliares
int a[10];
for (int i = 0; i < 9; i++)
a[i] = i;
▪ Valkyrie: http://valgrind.org/downloads/guis.html for (int i = 0; i < 10; i++){
return 0;
}
http://valgrind.org/docs/manual/quick-start.html http://valgrind.org/docs/manual/mc-manual.html#mc-manual.uninitvals
4
20/03/2019
Valgrind Valgrind
Exemplo 2 – Identifique e corrija os erros! Exemplo 3 – Identifique e corrija os erros!
#include<iostream>
https://en.wikipedia.org/wiki/Undefined_behavior
http://valgrind.org/docs/manual/mc-manual.html#mc-manual.badrw http://valgrind.org/docs/manual/mc-manual.html#mc-manual.leaks