Ceux-ci sont connus comme Heisenbugs.
Langue
Différents langages de programmation ont leur propre saveur de bugs.
C
L'ajout des instructions de débogage peut rendre le problème impossible de reproduire parce que le débogage de la déclaration des quarts de pointeurs (assez loin pour éviter une ERREUR de segmentation). Pointeur questions sont un cauchemar à suivre et à reproduire, mais il y a des débogueurs (tels que GDB et DDD) qui peuvent les aider.
Java
Une application qui a de multiples threads peut seulement montrer ses bugs avec un timing très précis ou une séquence d'événements. Une mauvaise simultanéité des implémentations peuvent provoquer des blocages dans des situations qui sont difficiles à reproduire.
JavaScript
Certains navigateurs web sont bien connus pour les fuites de mémoire. Code JavaScript qui s'exécute correctement dans un navigateur pourrait causer un mauvais comportement dans un autre navigateur. Utilisation de bibliothèques de tiers qui ont été rigoureusement testés par des milliers d'utilisateurs peut être avantageux d'éviter certains bogues obscures.
Environnement
Selon la complexité de l'environnement dans lequel l'application (qui a le bug) est en cours d'exécution, le seul recours qu'il pourrait être de simplifier l'environnement. L'exécution de l'application:
- sur un serveur?
- sur un ordinateur de bureau?
- dans un navigateur web?
Dans quel environnement l'application produisent le problème?
- le développement?
- test?
- la production?
Sortie applications superflues, tuer des tâches en arrière-plan, arrêter tous les événements programmés (tâches cron), supprimer les plug-ins et désinstaller le navigateur add-ons.
Mise en réseau
Comme le réseautage est essentiel pour de nombreuses applications:
- Assurer la stabilité des connexions réseau, y compris les signaux sans fil.
- Le logiciel le reconnecter après des pannes de réseau robuste?
- Faire toutes les connexions être fermés de façon à libérer de la mémoire?
- Sont des gens à l'aide de la machine qui ne devrait pas l'être?
- Sont des dispositifs non autorisés à interagir avec la machine du réseau?
- Existe-il des usines ou des tours radio de proximité qui peuvent causer des interférences?
- Faire des tailles de paquets et la fréquence chute à l'intérieur nominal des plages?
- Sont tous les appareils en réseau adéquat lourd pour une utilisation de la bande passante?
La cohérence
Éliminer autant d'inconnues que possible:
- Isoler les composants architecturaux.
- Supprimer les non-essentiels, ou éventuellement problématiques (en conflit), des éléments.
- Désactiver les différents modules de l'application.
Supprimer toutes les différences entre la production, de test et de développement. Utilisez le même matériel. Suivre les mêmes étapes, parfaitement, installation d'ordinateurs. La cohérence est la clé.
La journalisation
L'utilisation de quantités libérale de la journalisation de corréler les événements en temps passé. Examiner les journaux pour les erreurs évidentes, des problèmes de timing, etc.
Matériel
Si le logiciel semble bien, considérons des défauts du matériel:
- Sont la physique des connexions réseau solide?
- Sont là tout les câbles lâches?
- Sont frites assis correctement?
- Faire tous les câbles sont propres connexions?
- Est l'environnement de travail propre et exempt de poussière?
- Cachée des dispositifs ou des câbles été endommagée par des rongeurs ou des insectes?
- Existe-il des blocs défectueux sur les disques?
- Sont les ventilateurs de CPU de travail?
- Peut à la carte mère, l'alimentation de tous les composants? (PROCESSEUR, carte réseau, carte vidéo, disques, etc.)
- Pourrait interférences électromagnétiques être le coupable?
Ce qui se passe lorsque vous exécutez l'application en local (c'est à dire, pas à travers le réseau)? D'autres serveurs qui connaissent les mêmes problèmes? Est la base de données à distance? Pouvez-vous utiliser une base de données locale?
Firmware
Entre le matériel et le logiciel firmware.
- Est le BIOS de l'ordinateur à jour?
- Est la pile du BIOS de travail?
- Sont le BIOS de l'horloge et l'horloge système de la synchronisation?
De temps et de Statistiques
Les problèmes de synchronisation sont difficiles à suivre:
- Lorsque le problème survient-il?
- À quelle fréquence?
- Ce que d'autres systèmes sont en cours d'exécution à l'époque?
- L'application est sensible au temps (par exemple, va bondir jours ou des secondes intercalaires provoquer des problèmes)?
Recueillir dur des données numériques sur le problème. Un problème qui pourrait, au premier abord, sembler aléatoire, pourrait en fait avoir un motif.
La Gestion Du Changement
Parfois, des problèmes apparaissent après une mise à niveau du système.
- Quand le problème a d'abord commencer?
- Ce qui a changé dans l'environnement (matériel et logiciel)?
- Ce qui se passe après la restauration d'une version précédente?
- Quelles différences existent entre la problématique de la version et de la bonne version?
Gestion De La Bibliothèque
Systèmes d'exploitation différents ont différentes façons de distribuer contradictoires bibliothèques:
- Windows a l'Enfer des DLL.
- Unix peut avoir de nombreux rompu les liens symboliques.
- Java fichiers de la bibliothèque peut être tout aussi difficiles à résoudre.
Effectuer une nouvelle installation du système d'exploitation, et ne comprennent que le logiciel de prise en charge requis pour votre application.
Java
Assurez-vous que chaque bibliothèque est utilisée qu'une seule fois. Parfois, l'application des conteneurs ont une autre version de la bibliothèque de l'application elle-même. Cela pourrait ne pas être possible de reproduire dans l'environnement de développement.
Utiliser une bibliothèque de gestion des outils comme Maven ou de Lierre.
Débogage
Le Code d'une méthode de détection qui déclenche une notification (par exemple, journaux, e-mail, pop-up, pager bip) quand le bug se produit. L'utilisation de tests automatisés pour soumettre des données dans l'application. L'utilisation des données aléatoires. L'utilisation de données qui couvre connus et éventuels cas de bord. Finalement, le bug devrait réapparaître.
Le sommeil
Il est bon de répéter ce que d'autres ont mentionné: le sommeil. Passer du temps loin de la problème de, terminer d'autres tâches (comme la documentation). Être physiquement éloignés à partir d'ordinateurs et de faire de l'exercice.
L'Examen Du Code
Promenade à travers le code, ligne par ligne, et de décrire ce que chaque ligne ne pour vous-même, un collègue, ou un canard en caoutchouc. Cela peut conduire à des idées sur la façon de reproduire le bug.
Le Rayonnement Cosmique
Les Rayons cosmiques peuvent flip bits. Ce n'est pas aussi grand comme un problème dans le passé en raison de moderne la vérification des erreurs de mémoire. Logiciel pour le matériel que feuilles, de la Terre de protection est soumis à des problèmes qui ne peut pas être reproduite en raison du caractère aléatoire du rayonnement cosmique.