Heisenbug
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Bug informatique dont le nom est basé sur le principe d'incertitude d'Heisenberg défini en physique quantique : observer une structure modifie son état.

En pratique, on retrouve l'un des trois cas suivants :

  • le programme tourne sous le débogueur, mais pas sur la ligne de commande (Commande : terme utilisé dans de nombreux domaines, généralement il désigne un ordre ou un souhait impératif.)
  • le programme marche (La marche (le pléonasme marche à pied est également souvent utilisé) est un mode de locomotion naturel. Il consiste en un déplacement...) quand on rajoute des printf() pour déboguer, mais pas quand on les enlève
  • le programme fonctionne quand des techniques de contrôle (Le mot contrôle peut avoir plusieurs sens. Il peut être employé comme synonyme d'examen, de vérification et de maîtrise.) de bug sont appliquées, mais pas quand on retire ces contrôles pour une version de production.

Souvent, ce genre de bug provient d'une variable (En mathématiques et en logique, une variable est représentée par un symbole. Elle est utilisée pour marquer un rôle dans une formule, un prédicat ou un algorithme. En statistiques, une...) qui est utilisée avant d'être assignée. Elle est donc dans un état indéfini lorsque le programme est lancé.

Une autre source d'Heisenbug (Bug informatique dont le nom est basé sur le principe d'incertitude d'Heisenberg défini en physique quantique : observer une structure modifie son état.) provient d'une politique "laxiste" de gestion de la mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.), propice aux fuites de mémoires et à l'écrasement éventuel de données (Dans les technologies de l'information (TI), une donnée est une description élémentaire, souvent codée, d'une chose, d'une transaction d'affaire, d'un événement, etc.). Il convient d'être très strict sur la manière dont la mémoire dynamique (Le mot dynamique est souvent employé désigner ou qualifier ce qui est relatif au mouvement. Il peut être employé comme :) est manipulée.

Exemple

En Visual C++, il existe un mode debug (pour la mise au point (Graphie) d'un programme) et un mode release (la version de production généralement). Le mode debug a la "bonne" idée de réserver plus de mémoire qu'il n'en faut réellement. Ce comportement implique que le programme en mode debug plantera rarement, alors qu'en mode release, le programme plantera systématiquement à cause d'un débordement de pile. Il s'agit d'un Heisenbug car lorsqu'on veut l'analyser, il faut passer (Le genre Passer a été créé par le zoologiste français Mathurin Jacques Brisson (1723-1806) en 1760.) en mode debug, ce qui le fait disparaître...

Page générée en 0.111 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique