Les Tracepoint ? C'est sympa !
Pour ceux qui ne seraient pas (encore) abonnés aux Z'actus d'ASP-MAGAZINE, voici une information concernant une fonctionnalité de Visual Studio 2005 que je n'avais pas encore remarquée, et que je viens de découvrir par son intermédiaire : les Tracepoint.
Il s'agit, en gros, de l'équivalent d'un point d'arrêt sur lequel vous allez pouvoir notamment choisir d'envoyer un message vers la sortie du debugger, et, partie la plus intéressante, de continuer ou non l'execution sans marquer d'arrêt.
Dans ce cas, on peut comparer le fonctionnement à l'insertion d'un appel à System.Diagnostics.Debug.WriteLine/System.Diagnostics.Trace.WriteLine, mis à par :
- vous n'avez pas besoin de modifier le code
- l'execution ne se fait que si le debugger est attaché
- la suppression des constantes DEBUG/TRACE ne supprime pas l'affichage du message si le debuger est attaché (il ne s'agit pas d'une compilation conditionnelle, mais bien d'une fonction propre à Visual Studio)
- vous avez accès aux possibilités de réglages sur les breakpoint (test de condition, nombre d'accès, etc etc)
Au lieu de modifier votre code comme ceci :

Vous pouvez maintenant ajouter un Tracepoint :

Soit en partant de zéro en passant par "Insérer un point de trace" :

Soit en transformant un point d'arrêt existant via "Lorsqu'il est atteint..." (Aaah, le bon vieux F9 ;-) ) :

Il vous suffit de renseigner les champs comme ceci :

Vous aurez ainsi en sortie :

Prenons maintenant un cas "plus poussé", c'est à dire celui du travail dans une méthode dont le passage en arrière plan, y compris sur un break donc, provoque un nouveau passage, qui provoque un nouveau passage, qui provoque un nouveau passage, qui [...] (Paint, Focus etc).
Soit un code de dessin de ce genre (très poussé, lui aussi) :

Vous voulez afficher sur votre sortie les coordonnées du point de dessin, mais seulement si une CheckBox est cochée.
Avant, vous pouviez écrire ce genre de chose :

Maintenant, il vous suffit de définir votre action comme ceci :

Couplée avec la condition suivante pour le point d'arrêt :

Et le code n'a pas changer :

Sympa, non ?
jfo's coding : Tracepoints are AWESOME!
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :