1 / 60

Et si Sherlock Holmes faisait du debugging

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

harris
Download Presentation

Et si Sherlock Holmes faisait du debugging

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Microsoft Services:Un accompagnement global de nos clients Architecture & Planning Planification Conseil et Projets Déploiement et adoption Support Optimisation et Opération Support Premier Consulting Services Enterprise Strategy • Division Services France 2010 • 180 Consultants • 125 TechnicalAccount 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 Evaluation Développement Stabilisation Support Planification Opérations Déploiement www.microsoft.fr/services

  4. Notre positionnement est d’intervenir sur les projets critiques et les technologies récentes Criticité du projet • 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. Partenaires Maturité de la technologie • 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%

  5. De quoi va-t-on parler ? • De la philosophie de l’enquêteur • Des outils indispensables à tout détectiveinformatique • Des recettes pragmatiques pour débusquer lesbugs • Des crimes les plus courants

  6. 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

  7. 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

  8. 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

  9. Un bug est avant tout… • Un dysfonctionnement ? • Oui mais pourquoi faire ? • 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

  10. 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à… »

  11. 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

  12. 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

  13. 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

  14. 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

  15. Etape 1Se 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

  16. 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

  17. 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

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

  19. Etape 5Dé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

  20. Etape 5Dé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

  21. Etape 6Corriger • 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

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

  23. Etape 8Exulter (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

  24. 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érification • Documenter les symptômes et la correction effectuée • Expliquer comment éviter le problème à l’utilisateur

  25. 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.)

  26. 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

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

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

  29. 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

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

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

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

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

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

  35. 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 »

  36. 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 TaskManager • Clic droit sur un processus, « Create dump file » • Avec Visual Studio • Menu « Debug », « Save Dump As… »

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

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

  39. Les debugger : le microscope électronique du détective

  40. 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?

  41. 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

  42. Démo Le debugger de Visual Studio 2010 Visual Studio IDE

  43. 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

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

  45. 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)

  46. 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

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

  48. 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 »

  49. 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

More Related