Definición ABC » Tecnología » Bug (Informática)

+

Definición de Bug (Informática)

Las primeras computadoras modernas no eran precisamente pequeñas, ni funcionaban de la misma forma, sino en base a piezas mecánicas y electrónicas de mayor tamaño.

Nos situamos, en términos temporales, durante la Segunda Guerra Mundial, y más concretamente en 1944, cuando la computadora Mark II (construida por IBM en Harvard) sufrió un fallo en un relé electromagnético, para aquel entonces, un componente primordial para una computadora.

Al abrir la computadora y buscar el relé afectado, los responsables se encontraron con que una polilla (en inglés, bug) se había colado en el sistema, topando contra el relé, que quedó abierto

Desde entonces, cada vez que ocurría algún tipo de error en dicha computadora, los científicos encargados de su manejo empezaban a hablar de un bug, término que hizo fortuna para referirse a toda clase de problemas y errores que impedían el normal funcionamiento del hardware

Con el tiempo y el incremento de fiabilidad del hardware en paralelo a su miniaturización, la mayoría de los problemas sufridos por las computadoras quedaron en el apartado del software, aunque la denominación bug hizo fortuna para denominar a estos errores

¿Cómo debemos entender un bug en el sentido moderno del término? Pues, simplemente, como un fallo en el momento de programar, que da lugar a una parte del código fuente que contiene un error esencial, lo que provoca que el programa resultado tenga problemas en tiempo de ejecución.

Los bugs pueden dar lugar a problemas que se repitan siempre que el usuario hace una serie de cosas, o bien cuando se dan una serie de circunstancias que no siempre se repiten al hacer las mismas cosas en el mismo orden, sino que dependen de factores externos al programa.

Así, por ejemplo, podemos tener conflictos entre un programa y otro programa distinto cargado en memoria, pero que el problema se da cuando hemos hecho una serie de cosas con ambas aplicaciones.

Entre los bugs más comunes en programación tenemos el de división por cero, buffer overflow, violación de memoria, errores de operaciones con tratamiento no contemplado en el programa, acceso incorrecto a variables,...

Las herramientas de programación acostumbran a ofrecer soluciones para detectar y corregir estos problemas, primero repasando el código fuente y aplicando reglas lógicas (por ejemplo, si se accede a una variable antes de declararla y definir su tipo), y luego mediante herramientas de prueba del código que nos permiten jugar con los valores introducidos y examinar los registros con información de ejecución.

A este proceso se le denomina “debugar”, del término inglés debug (limpiar de bugs).

La cara más oscura de los bugs es que pueden abrir la puerta a la ejecución de malware en el sistema que corre el programa afectado

Ya que una vez que se ha provocado el error, existen maneras de aprovechar el problema provocado en el sistema operativo para ejecutar código arbitrario inyectado desde el exterior.

Si a esto le sumamos los privilegios que se pueden ganar en el sistema, tenemos un potencial peligro muy grave que ha sido explotado en multitudes ocasiones por cibercriminales para acceder a sistemas de terceros.

Fotos: Fotolia - selcuk kırbız / gustavofrazao

 
 
 
Temas en Bug (Informática)