En informatique, un bug (ou bogue) est un défaut de conception (ou d'exécution) d'un programme informatique (ou d'une application, d'un logiciel, etc.), qui est à l'origine d'un dysfonctionnement.

Un débogueur (ou débugueur, de l'anglais debugger) est un logiciel qui aide un développeur à analyser les bogues d'un programme. Pour cela, il permet d'exécuter le programme pas-à-pas, d'afficher la valeur des variables à tout moment, de mettre en place des points d'arrêt sur des conditions ou sur des lignes du programme. Il s'agit de l'application à la programmation informatique du processus de troubleshooting, c'est à dire, un processus de dépannage, de recherche logique et systématique de résolution de problèmes.

Certains bugs sont faciles à traquer. Je ne vais pas m'attarder sur ceux-là. Parlons plutôt de ceux qui sont vraiment mystérieux.

Un vieil adage disait que la Théorie, c'est quand on comprend tout, mais rien ne fonctionne ; la Pratique c'est quand on ne comprend rien, mais tout fonctionne. Mais parfois la Théorie et la Pratique se rencontrent : rien ne fonctionne et personne ne sait pourquoi. Dans ces cas là, il est bon de se rappeler de certaines techniques efficaces qui permettent bien souvent de toucher le fond du problème, et d'en afficher les détails. Au fil du temps, voici les 3 tactiques qui se sont montrées particulièrement utiles quand il s'agit de déboguer avec Visual Studio:

 

 

1. Gestion des exceptions pertinentes avec la fenêtre "Paramètres d'exception"

Une exception est une indication d'un état d'erreur qui se produit pendant qu'un programme est en cours d'exécution. Tu peux (et tu dois) fournir des gestionnaires qui répondent aux exceptions les plus importantes, mais il est important de savoir comment configurer le débogueur pour qu'il s'arrête sur les exceptions que tu veux afficher. Tu peux utiliser la fenêtre Paramètres d'exception pour spécifier les exceptions (ou ensembles d'exceptions) qui provoqueront l'arrêt du débogueur, et à quel point tu veux qu'il s'arrête. Tu peux ajouter ou supprimer des exceptions, ou spécifier les exceptions sur lesquelles effectuer un arrêt. Ouvre cette fenêtre lorsqu'une solution est ouverte en cliquant sur Déboguer/Fenêtres/Paramètres d'exception.

Tu peux trouver des exceptions spécifiques à l'aide de la fenêtre Rechercher de la barre d'outils Paramètres d'exception ou en utilisant la fonction de recherche pour filtrer des espaces de noms spécifiques (par exemple, System.IO). Le débogueur peut interrompre l'exécution à l'endroit où une exception est levée, ce qui te permet d'examiner l'exception avant qu'un gestionnaire soit appelé.

Dans la fenêtre Paramètres d'exception, développe le noeud d'une catégorie d'exceptions (par exemple, Exceptions Common Language Runtime, c'est-à-dire les exceptions .NET), puis coche la case correspondant à une exception spécifique de cette catégorie (par exemple, System.AccessViolationException). Tu peux également sélectionner une catégorie entière d'exceptions.

 

 

2. Pas "Uniquement Mon Code"

Par défaut, le débogueur de Visual Studio ne s’arrête que sur les exceptions générées par ton propre code d'utilisateur, survolant ainsi les appels externes et non-utilisateurs, par exemple les appels de systèmes et d'infrastructure. La fonctionnalité qui active ou désactive ce comportement est appelée "Uniquement Mon Code". Selon ce que tu débogues, tu pourrais penser à la désactiver, puisque la source ou la description du problème pourrait bien être située hors de "ton" code.

Pour désactiver (ou activer) Uniquement Mon Code, choisis le menu Outils > Options dans Visual Studio. Avec la commande débogage > général, annule (ou sélectionne) Activer Uniquement Mon Code.

 

 

3. Outils recommandés pour le traçage et la journalisation des erreurs

Parfois, il te faut enregistrer et analyser les détails complets des erreurs, des évènements et les séries d'exceptions internes : ce traçage implique un usage spécialisé de journalisation, typiquement pour des raisons de débogage. C'est l'historique, l'enregistrement séquentiel dans un fichier ou une base de données de tous les événements affectant un processus particulier. Voici mes outils de journalisation et de traçage préférés:
Systems.Diagnostics
- Microsoft Entreprise Library
- NLog
Elmah
- Log4net

 

Voilà.