Bug de computador: o que é, causas e soluções

Ele já foi restrito ao universo dos computadores, mas há algum tempo tornou-se termo presente em situações nas quais algo ou alguém não se comporta como deveria ou era esperado, ou você nunca ouviu, ou até mesmo disse: “Fulano tá bugado” ou “o aparelhou bugou total”?

Mas afinal de onde surgiu essa palavra, o que significa e como resolver as situações nas quais ela está presente no mundo da informática, é o foco do nosso encontro de hoje.

O que é bug?

Em informática – onde o termo se disseminou – bug de computador ou simplesmente bug, é quando uma situação ou comportamento inesperado ocorre e em alguma medida compromete de modo parcial ou até mesmo por completo, o uso do computador e/ou da aplicação.

Mas por que bug, sendo que a palavra no idioma inglês significa inseto?

A origem do termo bug

Circulam diferentes versões do porquê utiliza-se a palavra inseto em inglês para designar quando um equipamento apresenta mau funcionamento.

O que há de comum em todas elas, é que a causa do problema, é a presença de algum inseto na parte interna dos aparelhos, afetando o seu funcionamento.

Foi por exemplo, essa a causa da falha identificada no computador Mark II, na universidade de Harvard em 1947, pela analista de sistemas da marinha dos Estados Unidos, Grace Brewster Murray Hopper, a qual após um longo período de investigações, descobriu uma mariposa em um interruptor eletromecânico.

É importante lembrar – especialmente para os mais novos – que na época todo equipamento eletrônico utilizava válvulas, as quais emitem luz e calor, como se fossem pequenas lâmpadas e atraem alguns insetos, tal como acontece em torno de lâmpadas incandescentes. Por essa razão, era comum em aparelhos de televisão antigos, quando abertos, encontrar muitos insetos mortos em seu interior.

Os bugs na atualidade

O tempo passou e o termo popularizou-se quando os computadores pessoais passaram a fazer parte do quotidiano de empresas e pessoas, sempre que alguma causa não evidente à primeira vista ocorria e exigesse alguém com capacidade técnica para investigar a origem do problema.

Grosso modo, distingue-se atualmente bugs provenientes de problemas físicos (hardware) e lógicos (software).

Embora sejam mais comuns os bugs relacionados com a programação dos sistemas, é errado pressupor que sempre seja essa a causa. Uma falha em um componente de hardware também pode provocar o surgimento de um bug.

Assim e por exemplo, se um pente de memória RAM tem um determinado tipo de defeito ou mau funcionamento nos componentes que retêm os dados, produzirá erros diversos toda vez que um programa tentar gravar ou recuperar informação do respectivo endereço de memória, mas com efeito nos programas que tentam usar a memória defeituosa, sugerindo um bug de software.

Mesmo sendo o hardware uma possível fonte de produção de bugs, é inegável que na grande maioria das vezes, eles estejam originem-se no software, sendo que estes hoje estão presentes em praticamente tudo e não mais apenas em computadores.

Do seu relógio de pulso digital ao smartwatch, passando pela smart TV e pelo aparelho de streaming de vídeo, nas mais modernas geladeiras e aparelhos de micro-ondas, nos modelos de carros atuais e no sistema de som dentro deles, no console de videogame ou no smartphone, no modem ou no roteador Wi-Fi da sua casa, na câmera IP do sistema de segurança ou na catraca do ônibus, para citar apenas alguns, há pelo menos um – ou muitos – software que responde pelos recursos que o respectivo aparelho oferece.

E cada um desses softwares, pode ter um ou até vários bugs.

Essas falhas em softwares são em sua maioria, decorrentes de problemas de lógica de programação.

Se o programador responsável pelo código não prevê uma condição que a execução do programa possa produzir, quando a condição acontece, o respectivo programa não será capaz de produzir uma resposta válida e prevista, travando, encerrando ou dando algum tipo de erro ou o nosso velho e conhecido bug.

Versões alpha, beta e os bugs

Por mais experiente e qualificado que seja o programador e mesmo a equipe inteira – o mais comum – que produz um software qualquer, prever possíveis erros ou identificá-los quando acontecem, é tão mais difícil quanto mais sofisticado e complexo é o sistema.

Programas com milhões de linhas de código não são raros e por essa razão, o procedimento conhecido como debugging ou depuração, que é a identificação e correção das falhas (bugs), nem sempre são capazes de preveni-los ou mesmo resolvê-los todos.

É por essa razão que geralmente se tem as versões alpha e beta dos programas antes do seu lançamento.

Na fase alpha, o programa é liberado para testes que normalmente são conduzidos por funcionários da empresa de software e alguns programadores. Já na fase beta e dependendo da empresa e sua política de desenvolvimento, os usuários finais que fazem os testes.

Podem haver particularidades dependendo da empresa e do produto:

  • Às vezes o programa é liberado para download indiscriminado, mas com um alerta de que se trata de uma versão beta e não a definitiva e que por essa razão, há possíveis erros que devem ser relatados. Muitas vezes o usuário não precisa fazer nada e sempre que um erro ocorre, um log relativo ao mesmo é enviado automaticamente para o desenvolvedor;

  • Há empresas que têm programas de beta testers, em que apenas os usuários inscritos no programa têm acesso para download e como o nome faz supor, realizar testes. Eles devem relatar sua experiência, os erros identificados e até dar sugestões de melhorias. A Microsoft é uma empresa que tem um programa – o Windows Insider – desse tipo;

  • Também existem empresas de desenvolvimento de software, que além das versões definitivas e pagas, disponibilizam versões beta e gratuitas de alguns programas, às vezes sem alguns recursos e condicionam a instalação nos termos de licenciamento, que por ser uma versão beta, não dá direito a suporte e eventuais logs de erros são automaticamente enviados para análise.

Independente dos modelos acima ou de possíveis variações, um programa beta tem por principal objetivo testar o universo de possibilidades que algumas vezes apenas o usuário final é capaz de produzir, bem como ao aumentar o número de testadores, aumentam também as chances de bugs muito específicos ocorrerem em situações reais de uso.

O que é Bug Bounty?

Bug bounty é um tipo de programa que visa remunerar ou recompensar – que é a tradução de “bounty to” – aqueles que identificam e relatam bugs ao desenvolvedor.

Muitas empresas, especialmente os maiores fabricantes de software, têm programas de remuneração ou recompensam aqueles que se envolvem em descobrir e reportar falhas.

Entre os programas mais populares, o Project Zero mantido pelo Google, consiste de uma equipe de analistas de segurança, que tem como objetivo encontrar vulnerabilidades de dia zero (zero day), não apenas nos próprios serviços, mas em quaisquer softwares usados por seus usuários.

Uma falha “zero day”, é uma falha de segurança grave, desconhecida pela empresa responsável por corrigi-la ou até mesmo conhecida, mas ainda sem solução implantável.

Também é nomeada como dia zero, pelo fato da sua gravidade requerer “zero dia” para solução, ou seja, deve ser imediata.

O bug do milênio

Possivelmente um dos bugs mais famosos e que mais preocupação produziu, tenha sido o bug do milênio, também conhecido como bug Y2K (year 2000).

O problema era associado à virada do milênio, ou seja, na passagem do ano de 1999 para 2000. Isso porque na época, muitos dos sistemas de computadores e programas faziam referência ao ano usando apenas as casas de unidade e dezena, ficando subentendido que 99, era na realidade 1999.

No entanto, pelo mesmo raciocínio imaginava-se que com a chegada do ano 2000, os sistemas ao invés de considerar o ano correto, constariam como 1900 e então tudo que levasse em consideração o ano para algum tipo de cálculo ou operação, daria erro, como por exemplo, o cálculo de juros em operações bancárias.

A “economia” na determinação dos dígitos, vinha de uma época em que os sistemas computacionais operavam com limitada capacidade de memória e por essa razão, qualquer coisa que se conseguisse eliminar, fazia diferença.

Empresas do mundo todo que tinham sistemas que fizessem algum uso de datas, correram para produzir e disponibilizar atualizações.

O problema dos bugs

Para além do fato do aparelho que você pretende utilizar e que deveria ter um funcionamento perfeito, mas apresenta algum comportamento inesperado, há outros problemas que podem ser mais graves do que uma “simples” irritação.

Na atualidade, uma das mais sérias e preocupantes consequências da presença de bug em qualquer sistema, é o comprometimento da segurança.

Hackers – na verdade crackers – e todo tipo de criminoso virtual costuma valer-se de falhas para instalarem malwares, para realizarem invasões, vazamento de dados, ataques DDoS, entre outras ações que colocam em risco a segurança dos dados e dos seus usuários.

Mas nem sempre um bug é consequência de um ato involuntário ou um erro de um programador. É o caso planejado e pretendido frequentemente em software pirata. Muitas vezes é como o pirata de software é “remunerado”.

Muitos softwares piratas têm bugs intencionais, cujo principal propósito é introduzir o que se conhece como uma backdoor, ou porta dos fundos e que nada mais é do que uma vulnerabilidade por meio da qual o invasor ganha acesso ao sistema sem ser notado.

Ao ganhar acesso ao sistema, ele pode usá-lo para um ataque de negação de serviço, instalar um ransomware ou uma infinidade de outras situações.

Quais as fontes dos bugs?

Como já vimos, a principal causa é uma falha na estrutura de programação, um erro de lógica, que por sua vez acarreta um erro de execução quando uma condição não prevista acontece.

No seu notebook, por exemplo, você pode ter literalmente dezenas de fontes bugs, já que ele tem diferentes softwares de diferentes fabricantes.

Tudo começa quando você o liga e que é carregada a BIOS (Basic Input / Output System). Depois vem o sistema operacional e que além do kernel – o núcleo do sistema – carrega bibliotecas e serviços diferentes, como por exemplo, os drivers da placa de vídeo, de som e de outros componentes de hardware.

Há ainda os softwares de segurança responsável pelo firewall, antivírus, impressora, Wi-Fi e rede física e um monte de outras coisas que você não usa diretamente, mas que são essenciais para o Windows, para o Linux ou para outro sistema operacional funcionar plenamente.

Ou seja, nem tratamos da sua suíte de escritório, dos aplicativos da empresa ou do seu navegador web e de tudo o mais que você instalou desde que comprou a máquina.

Dependendo do programa usado, ele carrega outros ou pelo menos bibliotecas e que são trechos de código que conferem funcionalidades adicionais, como por exemplo, um segundo idioma no seu editor de texto, ou a inserção de fórmulas matemáticas, na sua planilha de cálculo.

Tudo isso é programação e, portanto, sujeito a conter um bug e seu respectivo efeito colateral.

Visto de outra forma, quanto mais programas no seu notebook ou apps no seu smartphone, maiores as probabilidades dos “insetinhos” lhe produzirem algum aborrecimento.

Como corrigir um bug?

Você deve estar se perguntando como é possível corrigir um bug, se até quem é responsável por fazê-lo, não o faz, certo?

O caso aqui não é a correção propriamente dita, mas como nos livrarmos de alguns.

Há dois caminhos, sendo um mais técnico e outro acessível a qualquer usuário, mesmo os mais leigos quando o assunto é tecnologia.

Eliminação de bugs usando logs do sistema

O mais técnico – mas nem tanto – faz uso do que se conhece por logs do sistema operacional.

Especialmente nos casos dos sistemas operacionais mais usados (Windows, Linux e MacOs), boa parte das ações executadas geram logs e que nada mais são do que registros do que é feito e gravados em arquivos de texto.

Sendo assim, o primeiro passo é identificar quais logs existem e onde são gravados, o que pode mudar de acordo com a versão do sistema operacional usado e no caso do Linux, além da versão, a distribuição Linux instalada.

O que nos interessa, são os logs de erros, pois geralmente neles ficam gravadas informações relativas ao erro produzido e que acarretou por exemplo, o fechamento de um programa. Além do erro, costumam constar data e horário, o que facilita a identificação do evento exato, desde que naturalmente tenha se verificado tal informação antes de recorrer ao log.

Ao se proceder assim, coisas surpreendentes podem ser descobertas. De repente você vê o motivo do seu editor de texto travar sempre que manda imprimir um documento, deve-se a um erro no driver da impressora e que ao realizar a atualização por meio do site do fabricante, o bug deixou de acontecer.

Ou que o congelamento da tela ao abrir um determinado programa, ocorre porque ele está consumindo muita memória RAM e que um upgrade no equipamento, pode ser a solução do problema.

9 dicas de eliminação de bugs para leigos

Você nem sabe onde são gravados os logs do sistema operacional e muito menos consegue interpretar as informações nele gravadas. Só o que consegue é usar os programas, isso quando os bugs não aparecem.

Se você foi capaz de instalar tudo o que tem, já possui o conhecimento necessário. E mesmo aqueles que têm algum conhecimento e recorrem aos logs, também podem se beneficiar das dicas a seguir.

A remoção de alguns bugs é possível por meio de procedimentos simples:

  1. Remoção de bloatware – bloatware é software que “incha” (bloat) o sistema operacional. Alguns fabricantes de notebooks e smartphones instalam vários programas nos equipamentos, sendo que alguns deles são totalmente inúteis. Para que manter um aplicativo “meus primeiros passos no modelo XPTO”, depois que você já o usa há meses? Lembre-se que quanto mais programas, mais chances de bugs, sem contar que alguns são carregados automaticamente e consomem recursos do sistema operacional, como memória;

  2. Instale apenas o necessário – muita gente instala qualquer coisa para testar e mesmo que depois não faça uso, mantém o programa ou app no computador ou celular. Remova tudo o que não é usado, pelo mesmo motivo da dica anterior. Mais do que isso, procure ver avaliações, depoimentos, capturas de tela e vídeos sobre o que eventualmente lhe interessar, antes de instalar;

  3. Atualização de firmware / BIOS – esse é um procedimento que mesmo para quem tem conhecimentos mais avançados, requer cautela, visto que se for feito de modo incorreto, pode inutilizar o aparelho. Só o realize quando o aparelho estiver com a bateria cheia, com conexão estável com a Internet e por intermédio da atualização oficial do fabricante e sendo assim, costuma ser seguro e simples. Mas em caso de dúvidas, não faça e recorra ao suporte técnico do fabricante;

  4. Updates do sistema operacional – muitos dos bugs estão relacionados com o sistema operacional. A boa notícia é que especialmente os mais críticos costumam receber updates (atualizações) periódicos. Se seu sistema operacional tem a opção de atualização automática, ative-a;

  5. Drivers – drivers de vídeo, som, rede, entre outros, costumam fazer parte dos updates do sistema operacional. Porém no caso de placas de vídeo dedicadas, impressoras, monitores externos, entre outros, é preciso verificar o modelo usado no site do fabricante, em busca de versões mais atuais e que geralmente corrigem bugs identificados nas anteriores;

  6. Programas – tal como no caso dos drivers, acessar o site do desenvolvedor e verificar se existem atualizações para seu software, é altamente indicado. Alguns programas, oferecem a opção durante o processo de instalação de atualizações automáticas quando disponíveis. Sendo o caso, ative-as;

  7. Pirataria – nunca instale programas piratas ou de procedência duvidosa! A suposta economia conseguida ao burlar o licenciamento pago, muitas vezes pode custar muito caro mais tarde, se houver um bug malicioso;

  8. Fóruns de discussão – alguns desenvolvedores mantém fóruns de discussão, nos quais a temática envolvendo bugs e as respectivas soluções encontradas pelos usuários, fazem sucesso. Muitos que propõe os tópicos, são leigos e buscam justamente ajuda dos mais experientes. A sua dúvida, o seu problema, pode não ser só seu, mas de muitos;

  9. FAQ – os FAQs são outro recurso popular em sites de muitas empresas e que tratam especialmente de situações recorrentes para muitos usuários. Determinados bugs podem ocorrer por uma questão de uma configuração inadequada ou algum procedimento que esteja ao alcance do usuário e esclarecido em um FAQ.

Conclusão

Os famosos bugs são o tipo de problema que não apenas irritam, mas podem comprometer a segurança e produzir prejuízos, mas que podem ter solução.

Comentários ({{totalComentarios}})