• Aucun résultat trouvé

Les outils de débogage

2.  Points d’arrêt et TracePoint

Inversement, si vous souhaitez ignorer l’exécution d’un bloc de code ou au contraire à nouveau exécuter un bloc de  code,  il  est  possible  de  déplacer  le  point  d’exécution  pour  désigner  la  prochaine  instruction  exécutée.  Il  suffit  de  déplacer la flèche jaune affichée sur la marge en face de la prochaine instruction à exécuter. 

 

 Comme  nous  l’indique  Microsoft,  cette  commande  doit  être  utilisée  avec  précaution.  Il  faut  notamment  se  souvenir des points suivants : les instructions situées entre l’ancien et le nouveau point d’exécution ne seront  pas  exécutées,  déplacer  le  point  d’exécution  en  arrière  n’annule  pas  les  instructions  déjà  traitées  et  le  point  d’exécution ne peut être déplacé qu’à l’intérieur d’une fonction ou procédure. 

2. Points d’arrêt et TracePoint 

Nous  avons  vu  que  la  solution  pour  passer  en  mode  arrêt  était  l’utilisation  des  touches  [Ctrl]  [Alt]  [Pause].  Cette  solution  présente  un  gros  inconvénient : l’exécution  s’arrête  n’importe  où.  Les  points  d’arrêt  nous  fournissent  une  solution plus élégante grâce à laquelle nous pouvons choisir l’emplacement où aura lieu l’interruption de l’exécution. 

Les  points  d’arrêt  peuvent  aussi  être  conditionnels.  Différents  types  de  conditions  sont  pris  en  charge  pour  leur  activation (condition, nombre de passage...). 

Les  TracePoint  sont  pratiquement  identiques  aux  points  d’arrêt  mis  à  part  que  pour  un  TracePoint  vous  pouvez  spécifier  l’action  exécutée  lorsque  le  point  est  atteint.  Ce  peut  être  le  passage  en  mode  arrêt  de  l’application  et/ou  l’affichage  d’un  message.  Les  points  d’arrêt  ou  les  TracePoint  sont  affichés,  dans  l’environnement  Visual  Studio,  par  une série d’icônes. Les icônes vides représentent un élément désactivé. 

représente un point d’arrêt normal, activé ou désactivé.

 

représente un point d’arrêt avancé (condition, nombre de passage ou filtre). 

représente un TracePoint normal, activé ou désactivé. 

représente un TracePoint avancé (condition, nombre de passage ou filtre). 

représente un point d’arrêt ou un TracePoint en erreur. 

représente un avertissement sur un point d’arrêt ou un TracePoint. 

a. Placer un point d’arrêt 

Pour placer un point d’arrêt, de nombreuses possibilités sont disponibles : 

effectuer un clic sur la marge de la fenêtre de code, 

positionner le curseur sur la ligne correspondante et utiliser le raccourci­clavier [Ctrl] B, 

utiliser l’option Point d’arrêt ­ Insérer un point d’arrêt du menu contextuel de la fenêtre de code. 

Toutes ces techniques insèrent le point d’arrêt et matérialisent son emplacement par un point rouge dans la marge et  le surlignement en rouge de la ligne correspondante. 

 

Pour  toutes  ces  solutions,  le  code  doit  être  visible  dans  l’éditeur.  L’option Interrompre  à  la  fonction  du  menu  Déboguer ­ Nouveau  point  d’arrêt  permet  de  placer  un  point  d’arrêt  sur  une  procédure  ou  fonction  en  saisissant  simplement son nom. 

 

 Attention, la boîte de dialogue vous propose de préciser sur quelle ligne de la fonction vous souhaitez placer  un point d’arrêt mais cette fonctionnalité n’est pas disponible pour les points d’arrêt sur des fonctions. 

Les points d’arrêt ainsi placés sont inconditionnels. Dès que l’exécution arrive sur cette ligne, l’application passe en  mode arrêt. On peut perfectionner le fonctionnement des points d’arrêt en y ajoutant des conditions, un nombre de  passage ou en le transformant en TracePoint. Il convient pour cela de modifier les propriétés du point d’arrêt par le  menu contextuel disponible par un clic droit sur la ligne concernée par le point d’arrêt. 

 

Le  passage  en  mode  arrêt  peut  être  soumis  à  condition.  La  boîte  de  dialogue  suivante  permet  de  préciser  les  conditions d’exécution du point d’arrêt. 

 

Nous  devons  saisir,  dans  cette  boîte  de  dialogue,  une  expression  qui  sera  évaluée  à  chaque  passage  sur  le  point  d’arrêt. L’exécution s’arrêtera alors : 

si le résultat de l’évaluation de la condition est vraie, 

si  le  résultat  de  l’évaluation  de  la  condition  a  été  modifié  depuis  le  dernier  passage  sur  ce  point  d’arrêt.  À  noter que, dans ce cas, au moins deux passages sont nécessaires pour provoquer l’arrêt de l’application (le  premier servant simplement à mémoriser le résultat de l’expression). 

Les points d’arrêt sont également capables de compter le nombre de fois où ils sont atteints et de s’exécuter pour un  nombre particulier de passages. 

 

Cette  boîte  de  dialogue  nous  permet  de  définir  le  nombre  de  passages  sur  le  point  d’arrêt pour que celui­ci arrête  effectivement l’application. Quatre options sont disponibles pour la condition d’arrêt sur le nombre de passages. 

Ajout d’une condition

Modification du nombre de passages

 

Attention, si une condition est indiquée pour le point d’arrêt, le nombre de passage correspond au nombre de fois où  l’exécution  de  l’application  est  passée  sur  cette  ligne  avec  la  condition  vérifiée.  Avec  la  configuration  de  notre  exemple,  nous  nous  arrêterons  dans  la boucle  au  100000ième  passage  (la  condition  sera  vraie  pour  i=0,100,200,300, 400,500,600,700,800,900). 

Les filtres permettent d’ajouter des critères supplémentaires pour l’exécution d’un point d’arrêt. Ces critères portent  sur le nom de la machine où s’exécute l’application, ainsi que le processus ou le thread. 

 

La condition doit être exprimée avec les mots clés MachineName, ProcessId, ProcessName, ThreadId, ThreadName  et les opérateurs & (et), || (ou),! (not). 

Un  point  d’arrêt  peut  être  transformé  en  TracePoint  en  précisant  une  action  particulière  à  exécuter  lorsqu’il  sera  atteint. 

Filtrage

Transformation en TracePoint

 

Cette  boîte  de  dialogue  attend  le  libellé  du  message  affiché  dans  la  fenêtre  de  sortie  lorsque  le  point  d’arrêt  est  atteint.  Elle  autorise  également  l’exécution  d’une  macro.  Pour  que  le  point  d’arrêt  soit  vraiment  transformé  en  TracePoint, l’option Continuer l’exécution doit être activée. 

b. Activer, désactiver, supprimer un point d’arrêt 

Les points d’arrêt peuvent également être momentanément désactivés en utilisant le menu contextuel. 

 

Le  point  d’arrêt  peut  ensuite  être  à  nouveau  activé  en  utilisant  à  nouveau  le  menu  contextuel.  Ce  même  menu  permet aussi la suppression d’un point d’arrêt, mais il est plus rapide d’effectuer un double clic sur le point d’arrêt lui­

même. Le menu Déboguer propose également l’option Supprimer tous les points d’arrêt, évitant d’avoir à parcourir  de nombreuses lignes de code pour éliminer l’ensemble des points d’arrêt. 

Pour nous faciliter la tâche lors du débogage d’une application, une fenêtre nous propose un récapitulatif de tous les  points  d’arrêt  placés  dans  votre  projet.  Cette  fenêtre  est  accessible  par  l’intermédiaire  du  menu Déboguer ­  Fenêtres ­ Points d’arrêt. Cette fenêtre propose un menu contextuel permettant de réaliser les principales actions  sur un point d’arrêt. 

 

Contrairement à des versions plus anciennes de Visual Basic (version 6.0), les points d’arrêt sont conservés lorsque  vous fermez votre projet.