8.1 Aparecimento de bugs
Debug de software é o processo de busca e correção de erros ou bugs em um programa. Esse processo é uma das partes mais interessantes e importantes do desenvolvimento de software e ajuda a garantir o funcionamento correto dos programas.
História do termo "bug"
O termo "bug" (erro) no contexto de programas de computador foi usado pela primeira vez na década de 1940. Embora o conceito de "bugs" já existisse antes da introdução de computadores, referindo-se a falhas mecânicas em vários dispositivos.
O primeiro caso documentado do uso do termo "bug" em tecnologia de computadores foi com uma equipe que trabalhava no computador Mark II na Universidade de Harvard em 1947(!). A equipe descobriu que um dos relés da máquina não funcionava porque uma mariposa havia entrado nele. Eles removeram o inseto e registraram isso no diário como o "primeiro caso real de detecção de inseto" (literal bug).
Embora não tenha sido a primeira vez que o termo "bug" foi usado para se referir a um erro, este incidente se tornou famoso e ajudou a popularizar o termo "bug".
Debug de programa
Debug é o processo de busca, diagnóstico e correção de bugs no software. O processo de debugging envolve várias etapas:
- Detecção do erro: Identificação dos sintomas que indicam a presença de um erro no programa.
- Reprodução do erro: Criação de condições em que o erro apareça novamente para melhor entender sua natureza.
- Diagnóstico do problema: Uso de várias ferramentas e métodos para analisar o código e encontrar a causa do erro.
- Correção do erro: Fazer alterações no código para eliminar o erro.
- Teste: Verificação da correção e teste do programa para garantir que o erro foi corrigido e não surgiram novos problemas.
Então, bug é um termo geral para qualquer erro em programas, e debug é o processo de detecção e eliminação desses erros.
8.2 Ferramentas e métodos de debugging
Log
Adicionar logs no código do programa permite monitorar sua execução e obter informações sobre o estado das variáveis e operações em diferentes pontos da execução do programa. Para logging em Python, existe uma excelente biblioteca — logging.
Exemplo de uso de logging:
import logging
# Configurando logging para saída de informações de debug
logging.basicConfig(level=logging.DEBUG)
def divide(a, b):
# Log da tentativa de divisão
logging.debug(f"Dividindo {a} por {b}")
if b == 0:
# Log de erro se b for igual a 0
logging.error("Tentativa de divisão por zero!")
return None
# Executa a divisão se b não for igual a 0
return a / b
result = divide(10, 2)
print(result)
Uso de Debuggers
Debuggers são ferramentas que permitem aos desenvolvedores executar um programa passo a passo, definir breakpoints, verificar valores de variáveis e alterá-los durante a execução do programa.
Debuggers populares:
- GDB: GNU Debugger para C, C++ e outras linguagens de programação.
- PDB: Debugger embutido no Python.
- Visual Studio Debugger: Debugger embutido no Microsoft Visual Studio.
- PyCharm Debugger: Debugger embutido na IDE PyCharm para Python.
Exemplo de uso do PDB
import pdb
def faulty_function(a, b):
pdb.set_trace() # Definição de breakpoint
result = a / b
return result
faulty_function(10, 0)
Quando o programa atinge pdb.set_trace(), ele pausa, e você pode executar comandos do debugger, como next (próximo passo), print (exibir valor da variável) e outros.
Vamos estudar o debug de programas usando o debugger embutido no PyCharm.
8.3 Uso do debug
De forma geral, o debug inclui o uso ativo de ferramentas de depuração e práticas para identificação e correção de erros.
Definição de breakpoints: Defina breakpoints no código para pausar a execução do programa nos pontos de interesse.
Execução passo a passo: Execute o programa passo a passo, observando as alterações no estado do programa e nos valores das variáveis.
Análise de variáveis: Examine os valores das variáveis e expressões em diferentes etapas da execução do programa para identificar dados incorretos ou erros lógicos.
Correção de erros: Faça alterações no código para corrigir os erros encontrados.
Re-teste: Após corrigir os erros, teste novamente o programa para garantir que o erro foi corrigido e não surgiram novos problemas.
Parece simples, né? Na próxima aula, vamos passar por todas as etapas em detalhe :)
GO TO FULL VERSION