Do tradutor. A depuração de software para muitos codificadores é uma tarefa chata e rotineira. Mas ainda assim é simplesmente impossível fazer sem depurar. Este post é uma tradução do
artigo original de Nick Karnik, no qual ele compartilha suas próprias observações sobre erros e falhas na depuração, encontradas não apenas entre programadores iniciantes, mas também entre profissionais.
Todos nós escrevemos código que, às vezes, infelizmente, se recusa a trabalhar. Isso é normal, apenas parte do processo de desenvolvimento. Se o programa der um erro, às vezes você simplesmente não sabe o que fazer a seguir e como corrigi-lo. Não se preocupe - todos os problemas estão resolvidos e até os codificadores mais experientes têm erros.
A Skillbox recomenda: Curso anual prático "Desenvolvedor PHP do zero ao PRO" .
Lembramos que: para todos os leitores de "Habr" - um desconto de 10.000 rublos ao se inscrever em qualquer curso Skillbox usando o código promocional "Habr".
Para minimizar erros, é necessário desenvolver habilidades de programação e depuração.
Eles mesmos são divididos em dois tipos - lógicos e sintáticos.
Os erros mais comuns do desenvolvedor
Mensagens de erro ausentesUm dos cenários mais difíceis é quando o aplicativo falha e não há mensagem sobre o motivo do que aconteceu. Para poder corrigir o problema no código, é necessário entender se ele ocorre durante a inicialização ou já está no processo. Você pode descobrir adicionando o log de mensagens do aplicativo no início do código.
Se não houver log, é mais provável que o programa trava durante o carregamento, mesmo antes de algo começar a ser gravado no log.
Se você tiver um log de mensagens, passe por ele e encontre a possível causa da falha. Para restringir a pesquisa, vale a pena fazer com que o programa registre os principais eventos no processo de seu trabalho. Nesse caso, o problema será mais fácil de encontrar.
Mensagens de erro de fobiaSe estamos falando de frontend, os erros geralmente são mostrados no próprio aplicativo, na interface do usuário ou no console do desenvolvedor. Às vezes, as mensagens podem ser vistas no back-end usando o terminal ou no log de eventos. Independentemente do tipo de erro, os iniciantes têm medo de tais mensagens e nem sequer as leem.
Esta é a principal razão pela qual alguns desenvolvedores demoram tanto para depurar.
Antes de tudo, é necessário estudar o erro, analisando tudo da maneira mais completa.
Relutância em estudar os logs do sistemaAlguns programas gravam arquivos de log ou geram um log de eventos. Tudo isso é apenas um depósito de informações úteis. Se você não conseguiu encontrar uma indicação exata da causa do erro no log de eventos, tente procurar mensagens sobre a falha ou, inversamente, o lançamento bem-sucedido de algo (módulo, serviço), o que ajudará a entender a causa do erro.
Log de rastreamento ausenteO rastreamento ajuda a rastrear o processo do programa e trabalhar com dados. Gravar mensagens de rastreamento enquanto o software está em execução simplifica o processo de depuração. O log de rastreamento é uma maneira simples de aprender como seu aplicativo funciona.
Incapacidade de trabalhar em etapasMuitos desenvolvedores escrevem grandes partes de código, após o que são compiladas e testadas como parte do aplicativo. Mas vale lembrar que o tempo para procurar bugs no código é proporcional ao seu volume.
Se houver muitas alterações, você precisará gastar muito tempo procurando um problema que apareça repentinamente. É melhor trabalhar em etapas. Faça pequenas alterações, compile código, teste o aplicativo - e repita tudo isso. Quando você implementa alterações em pequenas iterações, isso acelera o processo de criação do aplicativo. Se algo não funcionar, você poderá ver rapidamente o porquê.
Depois de escrever meu código, costumo revisá-lo para simplificar a escrita.
Relutância em realizar testes automáticosOs testes de unidade e a automação de teste de ponta a ponta permitem identificar erros em potencial à medida que ocorrem. Uma das causas dos erros é que os desenvolvedores refatoram o código antes de ser completamente testado, ou seja, as alterações não são testadas automaticamente.
Incapacidade de trabalhar com o método de exceçãoSe você não conseguir determinar a causa raiz do seu problema, precisará usar o método de exceção. Você pode comentar novos blocos de código para verificar se o erro desaparece. Isso ajuda a diagnosticar o problema.
Durante a depuração, você pode formular uma hipótese específica e tentar prová-la ou refutá-la usando o método proposto acima.
Copiar e colar com StackOverflowGeralmente, os desenvolvedores copiam e colam o código do StackOverflow sem ter uma ideia clara do que a seção copiada está fazendo. Tais ações têm várias consequências negativas, algumas das quais estão implícitas. Certifique-se de prestar atenção ao que você adiciona, tente entender quais funções são responsáveis pela execução do código inserido.
A propósito, geralmente quando faço uma pergunta no StackOverflow, respondo a mim mesmo um pouco mais tarde, porque estou pensando em um problema durante o processo de gravação.
O mesmo acontece durante a discussão de um problema em sua equipe. Você mesmo encontra uma solução para sua pergunta, simplesmente porque está pensando na causa do problema.
Relutância em re-inspecionar o códigoUm dos métodos de depuração mais bem-sucedidos que eu conheço é estudar seu código - repetidamente. Em alguns casos, escrever um pedaço de código do zero ajuda.
Incapacidade de rastrear chamadas de funçãoÀs vezes, as chamadas de funções de aprendizado em seu aplicativo também ajudam. Você só precisa verificar as variáveis e seus valores esperados. No processo, você pode encontrar áreas problemáticas em seu programa que levam a seu comportamento estranho.
Ignorância do depuradorVocê definitivamente precisa aprender como usar o depurador. Este é o melhor investimento de tempo. Todos os IDEs vêm com poderosas ferramentas de depuração que funcionam aproximadamente da mesma maneira. Aprenda essas ferramentas e você resolverá a maioria dos seus problemas ao escrever código.
A Skillbox recomenda: