A história por trás do termo Debugging
O termo "bug" foi usado pela pioneira em informática Grace Hopper, que divulgou a causa de um mau funcionamento em um computador eletromecânico inicial.
Uma página do registro do computador eletromecânico Harvard Mark II, com uma mariposa morta que foi removida do dispositivo, evento que originou o termo bug.
Em 1946, quando Admiral Grace Hopper foi liberada do serviço ativo, ingressou na Faculdade Harvard no Laboratório de Computação, onde continuou seu trabalho nos computadores Mark II e III. Os operadores localizaram um erro no Mark II em uma mariposa presa em um relé, cunhando assim o termo bug. Este bug foi cuidadosamente removido e colado no livro de registro. A partir do primeiro bug, hoje chamamos de erros ou falhas em um programa um bug e a remoção deles de debug, que seria remover o problema/erro do programa.
Fotografia do computador Mark II, onde foi encontrado o primeiro "bug", nessa época este computador precisava de aproximadamente 2 horas para calcular uma função arctan.
O que seria então Debugging dentro do contexto atual de programação / desenvolvimento de Softwares?
Debugging é o processo de encontrar e resolver defeitos ou problemas em um programa de computador que impede a operação correta do software ou sistema.
As táticas/estratégias de Debugging podem envolver interactive debugging, análise de controle de fluxo, unit testing, integration testing, análises de arquivos log, monitoramento em nível de aplicação ou sistema, memory dumps e profiling.
Existem fundamentalmente duas maneiras eficazes de executar o Debugging de um programa:
- Ferramentas (conhecidas também como Debuggers)
- Utilizando print statements
Aspectos importantes que nos ajudam no processo de Debugging:
- Por que o programa produziu este resultado?
- Estudar os dados disponíveis (texto do programa & resultados de testes).
- Formular uma hipótese que deve ser consistente com os dados.
- Construir e executar um experimento que possa ser repetido.
- Para que esse experimento seja útil, ele deve possuir o potencial de refutar a hipótese.
Para ver comandos experimentais de Debugging com o GNU Project Debugger visite este Tutorial