Construisez votre propre boite à outils avec ClrMD

Construisez votre propre boite à outils avec ClrMD

Session's metadata

Language:
French
Level:
Level 400
Technologies:
  • Debug

Schedule

Edition
DevDay 2018
Room:
Room 1
Hour:
2:30 PM

Construisez votre propre boite à outils avec ClrMD

Imaginez. Vous investiguez un problème sur un dump de 20 Go. Vous naviguez dans les structures en mémoire avec WinDBG et SOS, tentant de comprendre ce qui s'est passé. Vous commencez à avoir un aperçu du problème mais pour valide vos hypothèses, vous devez connaitre le nombre de timers qui sont schédulés et leur interval respectifs. Quels sont vos options ? Vous pouvez passer des heures à les énumérer un par un à base de :dumpheap -stat et autres !do. Vous pouvez aussi tenter de scripter WinDBG mais... bonne chance ! Ou plus simplement commencez à écrire du code C# en quelques minutes pour obtenir le résultat. Quel serait votre choix ? Cette session est destinée à ceux qui, comme nous, ont une forte préférence pour la dernière option. ClrMD est un Nuget Microsoft permettant d'introspecter une application en live ainsi que des dumps mémoire. Il vous permet de faire facilement en C# tout ce que vous pouvez faire à la main avec les commandes cryptiques de SOS: énumérer les threads, naviguer dans les tas gérés par le garbage collector pour creuser dans les instances des types .NET créées par votre code ou celui de .NET. Il vous permet surtout d'aller plus loin : écrire vos propres outils et même ajouter de nouvelles commandes à WinDBG et tout cela en C#. Cette session vous montrera comment résoudre les vrais besoin de debugging suivants : - charger un dump ou s'attacher à une application avec des trucs et astuces pour gérer les symboles, SOS et mscordacwks.dll - itérer sur les instances de tous les objets gérés par le garbage collector - récupérer la valeur des champs statiques et d'instance d'un objet - se simplifier la vie avec les dynamic C# - créer une extension pour WinDBG et transformer votre code en commandes pour les Ninjas du débugging ! Après cette session, vous saurez quel code écrire pour connaitre les strings dupliquées en mémoire, lister les timers, récupérer les tâches en cours dans la thread pool et tout ce dont vous aurez besoin pour vos prochaines investigations.

Speaker

Christophe Nasarre

Staff Software Engineer, Criteo

In addition to developing and shipping software on Microsoft stacks for 25+ years, Christophe Nasarre has been working as a Technical Reviewer for MSPress, Addison-Wesley and other publishing companies since 1996 on books such as "CLR via C#" and the...

  • France