Upload
lammert-perin
View
105
Download
2
Tags:
Embed Size (px)
Citation preview
2
Et si Sherlock Holmes faisait du debugging
LAN401 – Microsoft Techdays9 février 2011 – 11h-12h
Gilles Guimard
Julien Crozon
3
Présentation des speakers
Julien CrozonTech lead Société Générale Corporate Investment Bankinghttp://[email protected]
Gilles GuimardApplication Dev ManagerMicrosoft Francehttp://blogs.msdn.com/gillesg/[email protected]
444
Microsoft Services:Un accompagnement global de nos clients
Architecture & PlanningPlanification
Conseil et ProjetsDéploiement et adoption
SupportOptimisation et Opération
Evaluation
Planification
Développement
Déploiement
Stabilisation
Opérations
Support
Support Premier
Enterprise StrategyConsulting 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
www.microsoft.fr/services
Division Services Monde 2010
• 82 pays couverts• 18 000 employés• 35 000 partenaires• 44 langues parlées par nos ingénieurs
555
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%
Notre positionnement est d’intervenir sur les projets critiques et les technologies récentes
6
De quoi va-t-on parler ?
De la philosophie de l’enquêteurDes outils indispensables à tout détectiveinformatiqueDes recettes pragmatiques pour débusquer lesbugsDes crimes les plus courants
7
Où l’on ressent le désarroi du développeur
« Je comprends pas, ça marchait chez moi… »
Un développeur souhaitant rester anonyme
Démo
8
Qu’est-ce qu’un bug ?
Comment les traque-t-on ?
Les trois outils principaux de l’apprenti détective
Travaux pratiques : la mort du processus
Travaux pratiques : le vol de temps
9
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
10
Un bug est avant tout…
Oui mais pourquoi faire ?
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
11
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
13
Pour le bonheur
Un bon détective est plus heureuxEtant sur de ses capacités, il subit moins de stressEtant plus rapide à trouver les coupables, il rentre moins tard
Vie personnelle plus épanouie
14
Qu’est-ce qu’un bug ?
Comment les traque-t-on ?
Les trois outils principaux de l’apprenti détective
Travaux pratiques : la mort du processus
Travaux pratiques : le vol de temps
15
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
16
Etape 1Se préparer
Se concentrerS’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
17
Etape 2Demander la description des symptômes
Personne à joindreDate d’occurrence, date de première occurrenceVersion 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
18
Etape 3Reproduire 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
19
Etape 4Vérifier les taches de
maintenance
Contrôler que toutes les mises à jour ont été faites
BinairesDonnéesEtc.
20
Etape 5Débusquer le bug 1/2
Diviser l’espace des possibilitésUne simple recherche par dichotomie
permet en 20 étapes de trouver parmi un million de fonctions laquelle pose problème
« Lorsqu’un fait semble contredire une longue suite de déductions, c’est qu’on l’interprète mal »
Arthur Conan Doyle
Mathématiquement, si on vous donne suffisamment de temps, vous êtes SURS d’y arriver
21
Etape 5Débusquer le bug 2/2
Préférer l’analyse du comportement à l’approche différentielleRé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 à essayerConnaitre le rasoir d’OckhamRevenir en arrière pour tester une
hypothèse qui semblait peu probableavant, mais qui maintenant parait plusintéressante
« Lorsque vous avez éliminé l’impossible, ce qui reste, si improbable soit-il, est nécessairement la vérité »
Arthur Conan Doyle
22
Etape 6Corriger
En exclusivité, les trois niveaux de qualité d’une correction
Niveau 1 : elle marcheNiveau 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
23
Etape 7Tester que la correction
marche
Rester honnêteNe pas se laisser emporter (pour le moment) par la joie d’avoir peut-être trouvé
24
Etape 8Exulter (très fort)
S’autoriser un moment d’autocongratulationRépandre la nouvelle, expliquer comment VOUS avez trouvé le coupableSouvenez-vous où vous avez été bon, où vous auriez pu être meilleur
« Élémentaire mon cher Watson » Sir Arthur Conan Doyle
25
Etape 9Pré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érificationDocumenter les symptômes et la correction effectuéeExpliquer comment éviter le problème à l’utilisateur
26
Finalement, un bon détective doit être équipé…De son cerveau…et de la connaissance de
quelques outilsD’optimisme (je vais y arriver)
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.)
De pragmatisme : essayer de trouver la meilleure solution en terme de rapidité et de faisabilité
De curiosité (tiens, comment ça marche ?)De ténacité (je vais vraiment y arriver !)
27
Qu’est-ce qu’un bug ?
Comment les traque-t-on ?
Les trois outils principaux de l’apprenti détective
Travaux pratiques : la mort du processus
Travaux pratiques : le vol de temps
28
Ou l’on découvre trois “outils” que se doit de connaitre tout apprenti détective
Les symbolesLes dumpsLes debuggers
29
Les symboles : l’œil de l’ enquêteur (et pourquoi ne peut-on s’en passer)
30
Qu’est-ce qu’un symbole ?
Requit pour réaliser une analyse via un debuggerProduit lors du "link" de l'applicationDebug / ReleaseSymboles privés / publicLes symboles de Microsoft
31
Construction
Les symboles
La gestion des symbolesLes solutions d'industrialisation
TFS 2010, Symstore, PowerShell…
Serveur de compilationStockage physique des symboles Serveur HTTP SymProxy
Lien symbolique
32
Les symboles
La gestion des symbolesLes solutions d'industrialisation
TFS 2010, Symstore, PowerShell…
Debugger
Utilisation
Debugger
Serveur HTTP SymProxyServeur de compilation
Stockage physique des symboles
Serveur de symbole Microsofthttp://msdl.microsoft.com/downaload/symbols
Firewall
33
Les symboles
Dans les outilsTools / Options / SymbolsSrv*<Cache>*<Serveur>
Les Outils
34
DémoLes symbolesServeur de symbole
SymStore, Visual Studio IDE
35
Les dump : des instantanés de la scène de crime
36
Qu’est-ce qu’un dump ?
Sous Windows, un fichier avec l’extension .dmpIl 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émoireEst utilisé dans l’analyse « post mortem »
37
Comment génère-t-on un dump ?
Avec ProcDump de SysInternalsPermet de dumper en cas d’exceptionPermet de dumper a intervalle régulierPermet de dumper quand on consomme trop de CPUEtc.
Avec Process Explorer de SysInternalsClic droit sur un processus, « Create dump »
Avec WinDbgCommande « .dump [/ma] <nom de fichier>»
Avec le Task ManagerClic droit sur un processus, « Create dump file »
Avec Visual StudioMenu « Debug », « Save Dump As… »
38
DémoCréer un dump sur exception
ProcDump, Visual Studio IDE
39
L’analyse des dumps : un vaste sujet…
722 pages 472 pages 404 pages 424 pages 400 pages
40
Les debugger : le microscope électronique du détective
41
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?
42
Visual Studio 2010
Le Debugger Points d’arrêt conditionnels, trace pointFenêtre de Watch, les Pseudo RegisterFenêtre Immédiate, les commandes de type NTSD
Les nouveautéNouveaux point d’arrêt conditionnels sur des chainesFonctions de débogage multithread et parallèleAnalyse de dump mémoireImportation / exportation de points d'arrêt
43
DémoLe debugger de Visual Studio 2010
Visual Studio IDE
44
Qu’est-ce qu’un bug ?
Comment les traque-t-on ?
Les trois outils principaux de l’apprenti détective
Travaux pratiques : la mort du processus
Travaux pratiques : le vol de temps
45
Crime #1 : la mort du processus
Les leçons de Sherlock Holmes
46
Pour quelle raisons un processus peut-il disparaitre ?
Meurtre commandité (appel de kill depuis l’extérieur)
Mort naturelle (fin de la fonction Main)
Suicide (appel de ExitProcess() )
Crime (exception non rattrapée)
47
Comme souvent, la façon de trouver le coupable dépend de la nature du crime
ReproductibleS’attacher avec un debuggerSi 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 à distanceUtiliser WinDbg en local ou à distance avec son compagnon cdb.exe
IntermittentProgrammer un dump avec ProcDump
Utiliser l’option –t (dump on Terminate) en cas de fin normaleUtiliser l’option –e (dump on Exception) en cas de fin avec exception
48
DémoDebugger le démarrage d’un service
Un truc du docteur Watson
GFlags, Visual Studio Just-in-time Debugger, Visual Studio IDE
49
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 WinDbgPeut agréger plusieurs surveillances de processus à distance
Livré avec le package « Debugging Tools for Windows »
50
Qu’est-ce qu’un bug ?
Comment les traque-t-on ?
Les trois outils principaux de l’apprenti détective
Travaux pratiques : la mort du processus
Travaux pratiques : le vol de temps
51
Crime #2 : le vol de temps
Les leçons de Sherlock Holmes
52
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 WinDbgDes dumps réguliers avec ProcDump, puis ouverture de chaque dumpProcess 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
53
DémoL’analyse de performance par sampling
Un autre truc du docteur Watson
Process Explorer
54
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 performancePerfMon pour l’observation précise d’un compteur de performance
55
DémoQue fait Visual Studio au démarrage ?
ProcMon
56
Conclusions…où les conseils (durement appris) de deux debugger professionnels
57
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.)
58
Sites utilesLes Debugging Tools For Windows
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
SysInternalshttp://technet.microsoft.com/en-us/sysinternals
Les blogsLe 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 troubleshooterhttp://www.troubleshooters.com/tuni.htm
L’œuvre d’un vrai détectivehttp://fr.wikipedia.org/wiki/Sherlock_Holmes
59
MSDN et TechNet : l’essentiel des ressources techniques à portée de clic
http://technet.com http://msdn.com
Portail administration et infrastructure pour informaticiens
Portail de ressources technique pour développeurs