Heisenbug

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

En jerga de programación, un heisenbug es un tipo de bug que parece desaparecer o comportarse de otro modo al intentar ser observado en detalle.[1]​ El término es un juego de palabras a partir del nombre de Werner Heisenberg, el físico que dedujo el efecto de observación de la mecánica cuántica, según el cual el mero hecho de observar un sistema de una manera determinada altera el estado de este.

Términos similares como bohrbug, mandelbug,[2][3][4]​ y schrödinbug[5][6]​ han sido propuestos ocasionalmente para otro tipo de bugs inusuales;[7][8]​ de todos modos, no son tan conocidos ni empleados como el "heisenbug".[9]

Ejemplos[editar]

Los Heisenbugs se producen porque los frecuentes intentos de depuración de un programa informático, como la inserción de declaraciones de entrada y salida o la ejecución (cálculo) con un depurador, suelen tener el efecto secundario de cambiar sutilmente el comportamiento del programa, como el cambio de la dirección de memoria de las variables y el tiempo de ejecución.

Un ejemplo común de heisenbug es un error que se produce cuando el programa se compila con un compilador de optimización, pero no cuando el mismo programa se compila sin optimización (como suele hacerse con el fin de examinarlo con un depurador). Durante la depuración, los valores que un programa optimizado normalmente guardaría en los registros se desplazan a menudo a la memoria principal. Esto puede afectar al resultado de las comparaciones en coma flotante, por ejemplo, porque el valor en memoria puede tener un rango menor y una precisión menor que el valor en el registro. De manera similar, los heisenbugs pueden ser causados por efectos secundarios en las expresiones de prueba que se utilizan en tiempo de ejecución para evaluar aserciones en lenguajes como C y C++, donde la expresión de prueba no se evalúa si las aserciones se desactivan en el código de producción utilizando la macro NDEBUG.

Referencias[editar]

  1. «The Jargon File: heisenbug». 
  2. «The Jargon File: Mandelbug». Catb.org. Consultado el 5 de septiembre de 2013. 
  3. Raymond, Eric S.; The New Hacker's Dictionary, 3rd edition, 1996
  4. Clarke, Arthur C., The Ghost from the Grand Banks, Bantam Books, 1990
  5. «The Jargon File: Schroedinbug». Catb.org. Consultado el 5 de septiembre de 2013. 
  6. Raymond, Eric S.; The New Hacker's Dictionary, 3rd edition, 1996
  7. The following article investigates the various definitions of bohrbug, mandelbug and heisenbug proposed in the literature, as well as the statements made about the relationships between these fault types: Grottke, Michael; and Trivedi, Kishor S.; Software Faults, Software Aging and Software Rejuvenation, Journal of the Reliability Engineering Association of Japan, Vol. 27, No. 7, pp. 425-438, 2005.
  8. Grottke, Michael; and Trivedi, Kishor S.; Fighting Bugs: Remove, Retry, Replicate, and Rejuvenate, IEEE Computer vol. 40, no. 2 (February 2007), pp. 107-109
  9. A February 2012 Google Books search returns about 70 hits for "schroedinbug", 100 for "mandelbug", 400 for "bohrbug" or "heisenbug".

Enlaces externos[editar]