Just4Fun

Découvert grâce au très bon compte-rendu du JUG: http://blog.excilys.com/2010/05/14/compte-rendu-du-paris-jug-soiree-build-share-deploy/

SOSNET

Avec SOSNet, je dis STOP aux bugs!!

J’étais en train de manipuler les AppDomains sur mon projet DotNetServer (oui je sais le nom pu) et je voulais analyser la mémoire pour en savoir plus sur les Assembly chargée dans les AppDomains.

Pour cela, on peut utiliser WinDBG avec son extension SOS (Son of Strike) qui permet d’effectuer quelques commandes pour .Net. Il existe aussi une extension à SOS pour des commandes très utiles en .net: SOSEX.

Mais voila, WinDBG c’est barbare, en ligne de commande et pas très clair.
Yann Shwartz nous a fait une présentation sur touts ça lors d’une session ALT.Net, mais même après 1h d’explication, je crois qu’on est plus d’un à avoir laissé tombé la chose tellement c’est compliqué à utiliser.

Mais Yann a développé un outil formidable (oui oui, vraiment) qui permet de faire du LINQ sur nos objets en mémoire. Le projet s’appelle linqdbg et je vous invite tous à y contribuer. Associer cela à LinqPad et vous obtenez un outil puissant d’analyse de la mémoire de votre programme.

Mais je trouve tout de même que ce n’est pas la solution que j’attend. J’ai voulu quelque chose de plus « ergonomique » pour débuter avec Windbg.
J’ai trouvé pour cela SOSAssist mais je n’ai même pas réussi à l’exécuter (problème avec Windows 64bit?).

Ne trouvant rien d’équivalent, j’ai décidé de faire mon WinDBG Next Gen :)
Les sources du projet se trouve sur bitbucket car je suis devenu plus fan de Mercurial (HG) que de GIT.
Pour les plus flémard d’entre vous, vous pouvez télécharger la version compilée.

Et pour les vrais grosses huitres qui ne veulent même pas télécharger et l’exécuter, voici des screen de ce qui est possible de faire ;)

Sélectionnez une processus pour s'y attacher

Vous pouvez visualiser les AppDomains

Vous pouvez voir les Assembly chargée dans un AppDomain

Listing des types chargés en mémoire (avec recherche)

Double-click sur un type: vous voyez les instances. Double-click sur l'instance: vous voyez le détails de ses champs

Double-click sur un champ d'un objet: vous voyez le détail du membre... avec un 'Breadcrumb' pour naviguer entre les instances

La navigation d'instance fonctionne aussi avec les tableaux (sélection d'index)

Toutes les 'actions' sont tracées en ligne de commande. Il est toujours possible d'utilise les commandes comme avec WinDBG!!

Suivre

Recevez les nouvelles publications par mail.