Depuração

Por que confiar em nós

Depuração é o processo de localizar e remover erros de codificação em programas de computador, e consiste em identificar a causa de um erro e corrigi-lo. Isto posto, saiba o que é e como funciona a Depuração no artigo a seguir.

Qual é o Significado de Depuração?

A depuração é o processo de localizar e remover erros de codificação em programas de computador. Em tecnologia da informação e engenharia, a palavra ‘bug’ é sinônimo da palavra ‘erro’. O objetivo da depuração é identificar e corrigir a causa raiz de um erro.

A depuração desempenha um papel importante no processo de desenvolvimento de software e, ironicamente, testar para determinar e eliminar a presença de bugs pode levar tanto tempo quanto escrever código.

O próprio processo de depuração consiste em identificar a causa de um erro e corrigi-lo. 

Durante o processo de depuração, que pode ser realizado manualmente ou automatizado por meio de ferramentas de depuração de software, os engenheiros procurarão:

  • Erros de sintaxe;
  • Erros de digitação;
  • Erros de lógica;
  • Erros de implementação.

As ferramentas de software de depuração de código incluem suporte ao kit de desenvolvimento de software (SDK) para linguagens de programação específicas, funções de alerta de erro e uma interface de usuário (painel) que permite aos desenvolvedores detalhar para obter mais informações sobre erros específicos.

Techopedia Explica Depuração

No processo de depuração, programas de software completos são compilados e executados regularmente para identificar e corrigir problemas.

Grandes programas de software, que contêm milhões de linhas de código-fonte, são divididos em pequenos componentes. Para maior eficiência, cada componente é depurado separadamente no início, seguido pelo programa como um todo.

Em geral, a maneira como a depuração funciona depende das estratégias de teste globais escolhidas.

Estratégias de Depuração

As estratégias para depuração incluem:

  • Backtracking – o caçador de bugs começa a partir da instrução na qual um sintoma de erro foi descoberto e segue o código-fonte de trás para frente até o erro real.
  • Método de eliminação de causa – o engenheiro de software cria uma lista de possíveis causas para um erro e executa testes para determinar a origem de um ponto de falha.
  • Fatiamento de programa – os testadores de garantia de qualidade (QA) executam um grupo de instruções de programa no programa (fatia) sob condições específicas.
  • Depuração de espingarda – uma abordagem de tentativa e erro, dedos cruzados para depuração com base nas suposições educadas de um desenvolvedor.
  • Depuração de pato de borracha – o programador explica o código linha por linha para um pequeno pato de borracha ou outro objeto inanimado. O objetivo é incentivar o pensamento lógico e flexível.
  • Depuração de pares – em vez de explicar o código linha por linha para um objeto inanimado, os desenvolvedores se revezam explicando o código um para o outro linha por linha.

A Importância da Depuração

Depuração é uma parte fundamental do tratamento de código e desenvolvimento de software. Os especialistas costumam falar sobre a depuração como envolvendo “pessoas, processos e sistemas” que ajudarão a resolver quaisquer problemas com uma base de código existente.

Um excelente exemplo disso é o surgimento de práticas modernas chamadas “depuração reversa”. 

Na era do devOps e do desenvolvimento ágil de software, a depuração reversa envolve o monitoramento de programas e a entrega de dados de maneiras específicas, a fim de automatizar o processo de depuração.

Isso costumava ser feito por cientistas da computação individuais em um processo que muitas vezes se assemelhava a uma espécie de trabalho de detetive técnico.

Antigamente, os programadores arquivavam tíquetes individuais depois de observar algum bug funcional durante o teste e, em seguida, voltavam e vasculhavam o código manualmente ou usavam depuradores agora primitivos para descobrir o que estava acontecendo.

Não era incomum que até mesmo uma equipe experiente ficasse “perplexa” por um tempo, seja por causa da sofisticação do código que criou o bug, ou da indefinição do bug nos testes, ou ambos.

Por outro lado, os sistemas de depuração reversa que se assemelham ao design de gravadores de voo em aviões rastreiam programas em tempo de execução ou monitoram programas, a fim de fornecer as informações corretas para tornar a depuração mais automatizada.

Ao fazer mais tipos de monitoramento sofisticado em tempo real ou à medida que os programas são usados, as ferramentas de depuração reversa capturarão mais detalhes que os cientistas da computação tradicionalmente teriam que investigar manualmente e ajudarão os desenvolvedores a priorizar quais erros devem ser resolvidos primeiro.

Depuração Automatizada

As ferramentas de depuração automatizadas podem ajudar os desenvolvedores a simplificar o tratamento de erros e reduzir o tempo necessário para corrigir erros tipográficos e erros de sintaxe ou lógica.

Esse tipo de ferramenta de garantia de qualidade (QA) pode capturar exceções à medida que elas ocorrem e fornecer aos desenvolvedores dados de diagnóstico e contextuais para facilitar a resolução de erros. Algumas ferramentas de depuração automatizadas usam algoritmos codificados, enquanto outras usam mecanismos de aprendizado de máquina para identificar diferentes tipos de erros e padrões de erro.

Quando as equipes de desenvolvimento usam CI/CD (integração contínua e entrega contínua), a depuração pode ser feita automaticamente em testes de unidade durante o processo de desenvolvimento ou por meio de testes canário que liberam alterações de código para um número limitado de usuários finais no ambiente de produção.

Ferramentas de Depuração

Dalvik Debug Monitor Service (DDMS) é uma ferramenta de depuração usada na plataforma Android. O serviço Dalvik Debug Monitor é baixado como parte do SDK do Android. Alguns dos serviços fornecidos pelo DDMS são encaminhamento de porta, captura de tela no dispositivo, monitoramento de thread e heap no dispositivo e informações de estado de rádio.

O Dalvik Debug Monitor Service permite que os desenvolvedores identifiquem bugs em aplicativos executados em um emulador ou em um dispositivo Android real. Por exemplo, usando o recurso LogCat do DDMS, os desenvolvedores podem visualizar mensagens de log sobre o estado do aplicativo e do dispositivo. O LogCat pode identificar o número exato da linha em que ocorreu um erro.

Outro recurso do DDMS, conhecido como Controle do Emulador, permite que os desenvolvedores simulem estados e atividades do telefone. Por exemplo, ele pode simular diferentes tipos de redes, como GPRS, EDGE e UTMS, que podem ter diferentes características de rede, como velocidade e latência.

Além dos recursos mencionados anteriormente, o Dalvik Debug Monitor Service também fornece informações de LogCat, processo e estado de rádio, bem como chamadas recebidas, SMS e falsificação de dados de localização. Essa ferramenta de depuração pode ser integrada ao Eclipse IDE adicionando o plug-in ADT (Android Development Tools). Caso contrário, ele pode ser acessado a partir da linha de comando e se conectará automaticamente a qualquer emulador em execução.

Outros aplicativos de depuração populares incluem:

Chrome DevTools é um conjunto de ferramentas de criação, depuração e criação de perfil incorporadas ao Google Chrome.

Fusion Reactor é uma ferramenta de monitoramento contínuo e depuração ao vivo para Java e ColdFusion. Ele permite que os engenheiros de software façam referência cruzada de chamadas de API e pequenas unidades de código sem precisar compilar código continuamente.

GDB (The GNU Debugger) é executado na linha de comando e pode ser usado para depurar programas escritos em C, C++, Fortran e Modula-a.

Interactive Disassembler (IDA) permite que os engenheiros de software possam fazer engenharia reversa do código executável da máquina de volta à linguagem assembly.

Lightrun é um depurador do lado do servidor que permite que os desenvolvedores executem testes e diagnósticos em microsserviços, Kubernetes, enxames do Docker e Amazon Web Services.

Margaret Rouse
Technology Specialist
Margaret Rouse
Especialista em Tecnologia

Margaret é uma premiada redatora e professora conhecida por sua habilidade de explicar assuntos técnicos complexos para um público empresarial não técnico. Nos últimos vinte anos, suas definições de TI foram publicadas pela Que em uma enciclopédia de termos tecnológicos e citadas em artigos do New York Times, Time Magazine, USA Today, ZDNet, PC Magazine e Discovery Magazine. Ela ingressou na Techopedia em 2011. A ideia de Margaret de um dia divertido é ajudar os profissionais de TI e de negócios a aprenderem a falar os idiomas altamente especializados uns dos outros.