Fonctionnalités avancées des points d’arrêt sous Visual Studio

Visual_Studio

Tout le monde connaît les points d’arrêt dans Visual Studio, qui permettent de faciliter le débogage. Depuis toujours, ces points d’arrêt comportent des fonctionnalités avancées, parfois assez méconnues.

Petit rappel des fonctionnalités présentes sous Visual Studio 2013 :

Pour placer un point d’arrêt, il suffit de cliquer dans la marge gauche de la ligne de code, ou de cliquer sur F9. En faisant un clic droit sur ce point d’arrêt, on  a accès aux propriétés avancées :

    PA1

1) Emplacement

Cette option permet de spécifier / vérifier l’emplacement du point d’arrêt.
Cela permet dans certains cas de résoudre des « conflits » entre plusieurs points d’arrêt.

PA2

2) Condition :

Il s’agit de définir une expression, qui sera évaluée à chaque passage sur le point d’arrêt.
Dès que la condition est remplie (c’est-à-dire que l’expression évaluée retourne « True »), le débogueur arrête l'exécution.

Exemple : au sein d’une boucle, s’arrêter quand la variable « numId » vaut « ID5 » :

PA3

Il est également possible de déclencher le point d’arrêt sur simple changement de la valeur d’une variable :

PA4

3) Nombre d'accès

Cela permet de déclencher l’arrêt du débogage en fonction du nombre de passages sur le point d’arrêt.
Ceci peut être très utile lorsqu’on se trouve dans une boucle et que l’on sait que la valeur à tester se trouve « vers la fin », ou au contraire lorsqu’on veut tester le premier tour de boucle uniquement, sans avoir à supprimer notre point d’arrêt pour les tours de boucle suivants.

Les valeurs possibles sont les suivantes :

PA5

Remarque : par défaut, cette propriété est positionnée à “Toujours s’arrêter”.

Exemple : ne s’arrêter qu’au 10ème passage sur ce point d’arrêt :

PA6

4) Filtrer

On peut ici définir un filtre basé sur les périphériques, processus ou threads.
Il s’agit d’une expression, permettant d’exécuter le point d’arrêt uniquement si l’on se trouve sur une machine donnée, dans un processus donné, etc…

PA7

5) Lorsqu’il est atteint

Cette option permet de spécifier l’action à réaliser une fois le point d’arrêt atteint.
Elle est surtout utilisée pour afficher un message dans la fenêtre de sortie, faisant office de trace d’exécution.

Exemple :

PA8

 Ceci a pour effet d'inscrire dans la fenêtre de Sortie :
« Arrêt dans la fonction : WindowsFormsApplication1.Form1.Form1_Load(object, System.EventArgs) »

Remarque : cocher la case « Continuer l’exécution » permet dans notre cas d’écrire dans la fenêtre de sortie sans s’arrêter sur le point d’arrêt.

6) Modifier les étiquettes

Ceci permet de « nommer » un point d’arrêt, lui donner un nom facilement repérable.

PA9

Ce nom apparaît dans la fenêtre des points d’arrêt :

PA10

Un commentaire

  1. Super article de Sébastien Silvy.

    Quelques compléments bien pratiques avec ces breakpoints et sessions de debug:
    – les « Objects-ID » pour pister les instances d’objets à suivre (clic droit dans un Watch)
    – les attributs pour modifier l’affichage des objets : DebuggerDisplayAttribute, DebuggerBrowsableAttribute et DebuggerTypeProxyAttribute (c’est ce qui est utilisé dans les listes par exemple pour avoir un affichage custom)
    – les visualiseurs pour personnaliser fortement le rendu: par exemple pour créer une fenêtre de preview lorsque l’on passe sur un objet Bitmap.
    – les attributs DebuggerStepThrough pour indiquer au moteur d’ignorer le stepping (utile par exemple dans les intercepteurs).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.