Et si Sherlock Holmes faisait du debugging

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Le Nom L’adjectif Le verbe Objectif: Orthogram
ORTHOGRAM PM 3 ou 4 Ecrire: « a » ou « à » Référentiel page 6
Ma surprise du Zoo.
Page 1 Retour sur le e- tourisme. Page 2 Quelques chiffres…
Licence pro MPCQ : Cours
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Les numéros 70 –
Les numéros
Les identités remarquables
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
Autorisations Utilisation eCATT
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
1 7 Langues niveaux débutant à avancé. 2 Allemand.
Le Concours de Conaissance II Francais I decembre 2012.
JACK JEDWAB ASSOCIATION DÉTUDES CANADIENNES MAI 2013 LE DÉCLIN DU FRANÇAIS OU DE LANGLAIS AU QUÉBEC? OPINIONS DU RDC (RESTE DU CANADA)
Créer un premier questionnaire
SERABEC Simulation sauvetage aérien avec un Hercule C130. Départ de St-Honoré le 4 octobre Durée de vol 3 heures. Premier vol en Hercule pour les.
1 5 octobre 2011 / paw Présentation du 7 octobre 2011.
La méthodologie………………………………………………………….. p3 Les résultats
1 Bienvenue! Ministère de lEmploi et de la Solidarité sociale Direction des ressources humaines La conduite dun projet de refonte dun intranet Pascale.
Le Concours de Conaissance III Francais I fevrier 2013.
Écrit, animé et illustré par Sheila CartwrightTraduit par
Jack Jedwab Association détudes canadiennes Le 27 septembre 2008 Sondage post-Olympique.
1 WEB EFFICACITE 3 WHAT IS WEB 2.0 ? 4 SIMPLICITE.
Microsoft Business Intelligence en action dans l'entreprise
41 leçons de vie Music: snowdream Nov 2009 He Yan.
Le soccer & les turbans Sondage mené par lAssociation détudes canadiennes 14 juin 2013.
1 Choisir une catégorie. Vous recevrez la réponse, vous devez donner la question. Cliquez pour commencer.
1 Guide de lenseignant-concepteur Vincent Riff 27 mai 2003.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
Le drapeau canadien comme symbole de fierté nationale : une question de valeurs partagées Jack Jedwab Association détudes canadiennes 28 novembre 2012.
Le maitre est ici, et il te demande.
Session 7 1 IST/VIH/SIDA.
Le Concours de Conaissance Francais I novembre 2012.
Si le Diaporama ne s'ouvre pas en plein écran Faites F5 sur votre clavier.
Le chapitre 6 de l’évangile selon Saint Jean
La voyage de Jean Pierre
Tableaux de distributions
Tableaux de distributions
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
22 janvier 2013 Commercialiser en 2013 ! Que de variables à ajuster ! 1.
LES NOMBRES PREMIERS ET COMPOSÉS
Commission Nationale des Parents - APF Mme M.M. CARBON Service Conseil Médical et Connaissance des Handicaps P.A ENQUÊTE FRERES ET SŒURS Commission Nationale.
Logiciel gratuit à télécharger à cette adresse :
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
Module 2 : Préparation de l'analyse des performances du serveur
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1 INETOP
45 Conseils Écrit par Regina Brett, 90 ans,
Comment rendre une femme heureuse…
2 Développer, tester et déployer un site web avec WebMatrix (RIA101) Christine Dubois 9 février 2011.
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
WPF 4 et MultiTouch Les doigts dans le code 8 février 2011
2 Industrialisation des développements sur SQL Server avec Visual Studio 2010 Mardi 8 Février – 17h30 Karim Zegour – Winwise Michel Perfetti – MVP VS.
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Nom:____________ Prénom: ___________
Centre d’échange d’informations sur la Convention sur la Diversité Biologique Bienvenue dans le cours sur l’ajout d’une page web sur un site web développé.
Direction de santé publique de la Montérégie PORTFOLIO THÉMATIQUE EXPÉRIENCE DE SOINS DES ANGLOPHONES DE LA MONTÉRÉGIE Direction de santé publique Surveillance.
Exercice de vérification 1 p
Annexe Résultats provinciaux comparés à la moyenne canadienne
Commission paritaire de suivi des opérations de reclassement repositionnement dans le cadre du droit d’option Statistiques novembre 2010.
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
Réalisé par : Mr IRZIM Hédi Mr JRAD Firas
Transcription de la présentation:

Et si Sherlock Holmes faisait du debugging LAN401 – Microsoft Techdays 9 février 2011 – 11h-12h Gilles Guimard Julien Crozon

Présentation des speakers Julien Crozon Tech lead Société Générale Corporate Investment Banking http://bugslasher.net crozon@gmail.com Gilles Guimard Application Dev Manager Microsoft France http://blogs.msdn.com/gillesg/ gillesg@microsoft.com

Microsoft Services: Un accompagnement global de nos clients Architecture & Planning Planification Conseil et Projets Déploiement et adoption Support Optimisation et Opération Evaluation Développement Déploiement Stabilisation Opérations Support Premier Enterprise Strategy Consulting Services Division Services France 2010 180 Consultants 125 Technical Account Managers 190 Ingénieurs Support 17 Responsables de Mission 41 Partenaires référencés Division Services Monde 2010 82 pays couverts 18 000 employés 35 000 partenaires 44 langues parlées par nos ingénieurs www.microsoft.fr/services

Nos clients et partenaires sont particulièrement satisfaits par… Notre positionnement est d’intervenir sur les projets critiques et les technologies récentes Criticité du projet Maturité de la technologie Partenaires Notre engagement auprès de nos partenaires est : De leur assurer un transfert d’expertise, De leur apporter notre support sur les dernières technologies, De leur donner accès aux meilleures pratiques de mise en œuvre et de support. Nos clients et partenaires sont particulièrement satisfaits par… Le niveau d’engagement des consultants : 94% La gestion de l’équipe de projet : 92% Les compétences techniques des consultants : 91% La relation avec les équipes du client : 90%

De quoi va-t-on parler ? De la philosophie de l’enquêteur Des outils indispensables à tout détective informatique Des recettes pragmatiques pour débusquer les bugs Des crimes les plus courants

Où l’on ressent le désarroi du développeur Démo « Je comprends pas, ça marchait chez moi… » Un développeur souhaitant rester anonyme

Comment les traque-t-on ? Qu’est-ce qu’un bug ? Les trois outils principaux de l’apprenti détective Travaux pratiques : le vol de temps Travaux pratiques : la mort du processus

Où l’on parle de bugs (et de la meilleure façon de les traquer) « …un fait hors de l’ordinaire est plutôt un indice qu’un embarras… » Sir Arthur Conan Doyle « Un bon bug est un bug mort » General Lee

Un bug est avant tout… NON ! Un dysfonctionnement ? Une source d’ennui ? La meilleure façon de rester tard le soir ? NON ! Un bug est une excellente occasion de devenir un meilleur chasseur de bug Oui mais pourquoi faire ?

Pour l’argent Un bon détective est mieux payé A des arguments lors des négociations salariales > « Si je n’avais pas été là… »

Pour la gloire Un bon détective obtient la reconnaissance de ses collègues Détenteur d’une sagesse : « celui qui sait » Plus on chasse les bugs, plus on apprend à les chasser

Pour le bonheur Un bon détective est plus heureux Etant sur de ses capacités, il subit moins de stress Etant plus rapide à trouver les coupables, il rentre moins tard Vie personnelle plus épanouie

Comment les traque-t-on ? Qu’est-ce qu’un bug ? Les trois outils principaux de l’apprenti détective Travaux pratiques : le vol de temps Travaux pratiques : la mort du processus

Le secret d’un bon détective …ou les 9 étapes d’une enquête rondement menée « Rien n’est petit pour un grand esprit » Arthur Conan Doyle « J’aime qu’un plan se déroule sans accroc » Colonel John Hannibal

Etape 1 Se préparer Se concentrer S’assurer d’avoir le temps de se pencher sur le problème (pas de précipitation) Etre zen et avoir une attitude positive « …[Sherlock Holmes] était en veston d’intérieur, paresseusement étendu sur un sofa ; à portée de sa main une pipe et une pile de journaux… » Arthur Conan Doyle

Etape 2 Demander la description des symptômes Personne à joindre Date d’occurrence, date de première occurrence Version des binaires/OS/etc. Quels sont les symptômes, et comment les reproduire Tout se joue à cette réponse ; on caractérise ici les problèmes reproductibles ou intermittents Y-a-t-il d’autre symptômes en relation « Peut-être me suis-je entrainé à voir ce que d’autres ne voient pas…Sinon d’ailleurs, pourquoi seriez-vous venue me consulter ? » Arthur Conan Doyle

Etape 3 Reproduire les symptômes Ne surtout pas sauter cette étape : c’est la seule qui permettra d’être sûr d’avoir corrigé Si le problème est intermittent, définir un plan qui permettra de valider qu’on a résolu le problème Si il y a une occurrence toutes les X minutes, la probabilité que le problème ne soit pas apparu après Y minutes est 𝑃= 𝑒 − 𝑌 𝑋 × 𝑌 𝑋 (exemple : pour une fois toutes les 10 minutes, on a 7% de chance que rien ne soit arrivé au bout de 40 minutes, ou 0,25% au bout de 80 minutes) « Chercher une explication avant de connaitre tous les faits est une erreur capitale. Le jugement s’en trouve faussé. » Arthur Conan Doyle

Etape 4 Vérifier les taches de maintenance Contrôler que toutes les mises à jour ont été faites Binaires Données Etc.

Etape 5 Débusquer le bug 1/2 Diviser l’espace des possibilités Une simple recherche par dichotomie permet en 20 étapes de trouver parmi un million de fonctions laquelle pose problème Mathématiquement, si on vous donne suffisamment de temps, vous êtes SURS d’y arriver « Lorsqu’un fait semble contredire une longue suite de déductions, c’est qu’on l’interprète mal » Arthur Conan Doyle

Etape 5 Débusquer le bug 2/2 Préférer l’analyse du comportement à l’approche différentielle Répondre à “pourquoi ?” plutôt qu’à “qu’est-ce qui a changé ?” (les deux sont cependant souvent nécessaires) Ne pas hésiter a tester certaines hypothèses peu probables si elles sont rapides à essayer Connaitre le rasoir d’Ockham Revenir en arrière pour tester une hypothèse qui semblait peu probable avant, mais qui maintenant parait plus intéressante « Lorsque vous avez éliminé l’impossible, ce qui reste, si improbable soit-il, est nécessairement la vérité » Arthur Conan Doyle

Etape 6 Corriger En exclusivité, les trois niveaux de qualité d’une correction Niveau 1 : elle marche Niveau 2 : elle marche et vous savez pourquoi Niveau 3 : elle marche, vous savez pourquoi, et elle explique tous les comportements du système observés lors des étapes précédentes

Etape 7 Tester que la correction marche Rester honnête Ne pas se laisser emporter (pour le moment) par la joie d’avoir peut-être trouvé

Etape 8 Exulter (très fort) S’autoriser un moment d’autocongratulation Répandre la nouvelle, expliquer comment VOUS avez trouvé le coupable Souvenez-vous où vous avez été bon, où vous auriez pu être meilleur « Élémentaire mon cher Watson » Sir Arthur Conan Doyle

Etape 9 Prévenir les occurrences futures Faire une correction défensive : qu’il soit difficile pour un autre développeur ou utilisateur de le rencontrer de nouveau Si besoin, automatiser une vérification Documenter les symptômes et la correction effectuée Expliquer comment éviter le problème à l’utilisateur

Finalement, un bon détective doit être équipé… De son cerveau…et de la connaissance de quelques outils D’optimisme (je vais y arriver) De ténacité (je vais vraiment y arriver !) De curiosité (tiens, comment ça marche ?) De pragmatisme : essayer de trouver la meilleure solution en terme de rapidité et de faisabilité De scepticisme : TOUJOURS vérifier soit même (si possible) les affirmations des autres De calme : ne pas se laisser envahir par les émotions (colère, stress, etc.)

Comment les traque-t-on ? Qu’est-ce qu’un bug ? Les trois outils principaux de l’apprenti détective Travaux pratiques : le vol de temps Travaux pratiques : la mort du processus

Ou l’on découvre trois “outils” que se doit de connaitre tout apprenti détective Les symboles Les dumps Les debuggers

Les symboles : l’œil de l’ enquêteur (et pourquoi ne peut-on s’en passer)

Qu’est-ce qu’un symbole ? Requit pour réaliser une analyse via un debugger Produit lors du "link" de l'application Debug / Release Symboles privés / public Les symboles de Microsoft date

La gestion des symboles Les solutions d'industrialisation Les symboles La gestion des symboles Les solutions d'industrialisation TFS 2010, Symstore, PowerShell… Construction Serveur de compilation Stockage physique des symboles Serveur HTTP SymProxy Lien symbolique date

La gestion des symboles Les solutions d'industrialisation Les symboles La gestion des symboles Les solutions d'industrialisation TFS 2010, Symstore, PowerShell… Utilisation Firewall Serveur de symbole Microsoft http://msdl.microsoft.com/downaload/symbols Debugger Serveur HTTP SymProxy Serveur de compilation Stockage physique des symboles Debugger

Tools / Options / Symbols Srv*<Cache>*<Serveur> Les symboles Dans les outils Tools / Options / Symbols Srv*<Cache>*<Serveur> Les Outils

Les symboles Serveur de symbole Démo Les symboles Serveur de symbole SymStore, Visual Studio IDE date

Les dump : des instantanés de la scène de crime

Qu’est-ce qu’un dump ? Sous Windows, un fichier avec l’extension .dmp Il contient un instantané de l’état du processus au moment de la prise du dump On peux choisir de n’avoir que le minimum d’informations (le thread courant et sa callstack), ou toute la mémoire Est utilisé dans l’analyse « post mortem »

Comment génère-t-on un dump ? Avec ProcDump de SysInternals Permet de dumper en cas d’exception Permet de dumper a intervalle régulier Permet de dumper quand on consomme trop de CPU Etc. Avec Process Explorer de SysInternals Clic droit sur un processus, « Create dump » Avec WinDbg Commande « .dump [/ma] <nom de fichier>» Avec le Task Manager Clic droit sur un processus, « Create dump file » Avec Visual Studio Menu « Debug », « Save Dump As… »

Créer un dump sur exception Démo Créer un dump sur exception ProcDump, Visual Studio IDE

L’analyse des dumps : un vaste sujet… 722 pages 472 pages 404 pages 424 pages 400 pages

Les debugger : le microscope électronique du détective

Les Debugger Les Outils Visual Studio Debugging Tools for Windows Windbg.exe, ntsd.exe, cdb.exe Les fonctionnalités Debugging interactif (debug Live) Ouvrir un "dump" mémoire et l'analyser (post mortem) Debug Local ou via le réseau Debugging en mode kernel Nécessite les symbole pour éviter que l’enquête ne dure pas plusieurs semaines, mois? date

Visual Studio 2010 Le Debugger Points d’arrêt conditionnels, trace point Fenêtre de Watch, les Pseudo Register Fenêtre Immédiate, les commandes de type NTSD Les nouveauté Nouveaux point d’arrêt conditionnels sur des chaines Fonctions de débogage multithread et parallèle Analyse de dump mémoire Importation / exportation de points d'arrêt

Le debugger de Visual Studio 2010 Démo Le debugger de Visual Studio 2010 Visual Studio IDE date

Comment les traque-t-on ? Qu’est-ce qu’un bug ? Les trois outils principaux de l’apprenti détective Travaux pratiques : le vol de temps Travaux pratiques : la mort du processus

Crime #1 : la mort du processus Les leçons de Sherlock Holmes Crime #1 : la mort du processus

Pour quelle raisons un processus peut-il disparaitre ? Mort naturelle (fin de la fonction Main) Suicide (appel de ExitProcess() ) Crime (exception non rattrapée) Meurtre commandité (appel de kill depuis l’extérieur)

Comme souvent, la façon de trouver le coupable dépend de la nature du crime Reproductible S’attacher avec un debugger Si reproductible uniquement sur le poste client ou sur un serveur (sans debugger d’installé), vous pouvez Copier les fichiers de debugging distant de Visual Studio (situés dans <répertoire d’installation>\Common7\IDE\<architecture>) et utiliser Visual Studio à distance Utiliser WinDbg en local ou à distance avec son compagnon cdb.exe Intermittent Programmer un dump avec ProcDump Utiliser l’option –t (dump on Terminate) en cas de fin normale Utiliser l’option –e (dump on Exception) en cas de fin avec exception

Debugger le démarrage d’un service Un truc du docteur Watson Démo Debugger le démarrage d’un service Un truc du docteur Watson GFlags, Visual Studio Just-in-time Debugger, Visual Studio IDE

Le cas particulier des arrêts (très) intermittents de processus Il existe un outil Microsoft qui permet de debugger un logiciel sans intervention humaine : ADPlus Permet de donner des conditions très spécifiques de créations de dumps (seulement après passage dans telle fonction, seulement si un type particulier d’exception arrive, etc.) Se base sur des scripts de type WinDbg Peut agréger plusieurs surveillances de processus à distance Livré avec le package « Debugging Tools for Windows »

Comment les traque-t-on ? Qu’est-ce qu’un bug ? Les trois outils principaux de l’apprenti détective Travaux pratiques : le vol de temps Travaux pratiques : la mort du processus

Les leçons de Sherlock Holmes Crime #2 : le vol de temps

Une méthode injustement méconnue : le sampling Consiste a observer périodiquement la callstack d’un processus N’importe quel visionneur de callstack fait l’affaire : Visual Studio ou WinDbg Des dumps réguliers avec ProcDump, puis ouverture de chaque dump Process Explorer Ne marche que si le problème de performance est clairement localisé dans une fonction Dans ce cas, la plupart des callstacks comportent cette fonction dans leurs listing

L’analyse de performance par sampling Un autre truc du docteur Watson Démo L’analyse de performance par sampling Un autre truc du docteur Watson Process Explorer

Une autre méthode injustement méconnue : l’observation extérieure du coupable Consiste a utiliser les outils qui analysent les actions d’un processus ProcMon de SysInternals pour monitorer les accès aux fichiers, à la base de registres, au réseau, etc… Process Explorer de SysInternals pour les grandes tendances et quelques compteurs de performance PerfMon pour l’observation précise d’un compteur de performance

Que fait Visual Studio au démarrage ? Démo Que fait Visual Studio au démarrage ? ProcMon

Conclusions …où les conseils (durement appris) de deux debugger professionnels

1. Etre un bon troubleshooter, c’est une question de méthode 2. Sans symboles, rien n’est facile 3. Chaque heure passée sur du debugging révèle un problème dans le processus de R&D (et coûte très cher…) 4. Si vous ne trouvez pas (tout de suite) le bug, prévoyez une solution pour qu’il handicape moins l’utilisateur (sauvegarde de l’état, redémarrage automatique, etc.)

Sites utiles Les Debugging Tools For Windows SysInternals Les blogs http://www.microsoft.com/whdc/devtools/debugging/default.mspx SysInternals http://technet.microsoft.com/en-us/sysinternals Les blogs Le blog de Naveen Rinivasan : http://naveensrinivasan.com/ Le blog de Mark Russinovich : http://blogs.technet.com/b/markrussinovich/ Le blog de John Robbins : http://www.wintellect.com/cs/blogs/jrobbins/default.aspx Le blog de Tess Ferrandez : http://blogs.msdn.com/b/tess/ http://bugslasher.net/ Et si WinDbg vous fait peur… http://windbg.info La philosophie du troubleshooter http://www.troubleshooters.com/tuni.htm L’œuvre d’un vrai détective http://fr.wikipedia.org/wiki/Sherlock_Holmes

MSDN et TechNet : l’essentiel des ressources techniques à portée de clic Portail administration et infrastructure pour informaticiens Portail de ressources technique pour développeurs http://technet.com http://msdn.com