Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Placer un point d’arrêt dans la pile d’appel

[new:15/02/2011]Savez-vous qu’il est possible de placer un point d’arrêt directement dans la pile d’appel (dans le debugger de Visual Studio ? Peut-être pas car c’est une astuce assez peu utilisée.

La pile d’appel, vous connaissez

C’est l’une des fenêtres du debugger. Elle montre l’empilement des appels de méthodes à un moment donné (un break point, une exception) ce qui permet de remonter le fil des appels pour trouver où se cache une éventuelle erreur.

La pile se lit à l’envers, du bas vers le haut, si on veut la lire dans l’ordre chronologique des évènements. C’est la nature même d’une pile ... l’élément le plus récent (ajouter en dernier) se trouvant au sommet de la pile.

Vous savez aussi qu’en double cliquant sur l’une des lignes vous accédez directement au code source qui peut alors être inspecté.

Vous vous êtes aussi rendu compte certainement que pour faciliter la lecture la ligne “courante” est surlignée en jaune et que ses appelants le sont en vert.

Une fois qu’on a dit tout cela, on a dit le principal sur cette fenêtre de debug.

Ajouter des points d’arrêt dans la pile d’appel

Mais il y a une astuce qui est rarement utilisée, parce qu’on n’y pense pas, parce que personne ne vous l’a fait voir avant. Question d’information et d’habitude, Visual Studio est tellement vaste et offre tellement d’options et d’astuces que je ne connais personne qui les maitrise toutes de toute façon.

Reprenons une vue sur la pile d’appel lors d’une session de debug :

2664_image_30F31CF8

On peut voir ici une cascade d’appels depuis le Main() du programme jusqu’à la méthode ExecuteDataTable, en passant par toutes les couches de l’architecture du logiciel traversées par l’appel.

Imaginons que dans cette suite d’évènements nous désirions placer un point d’arrêt sur la méthode BinData(). Dans le cas le plus habituel le développeur double-cliquera sur cette ligne pour afficher le code et y placera le break point.

Mais il y a plus simple : faites un clic droit sur la ligne en question (par exemple ici BinData()) et sélectionnez dans le menu Break point / Insert Break point (dans un VS en français, que je n’utilise pas, cela doit être en toute logique Point d’arrêt / Insérer un point d’arrêt).

Le break point sera visualiser dans la pile d’appel :

1007_image_3D14971F

Lors du prochain passage sur cette méthode le debugger s’arrêtera, comme sur n’importe quel break point.

Conclusion

C’est simple, pratique, ça ne casse pas trois pattes à un canard, mais ça vaut le coup de le savoir...

Stay Tuned !

blog comments powered by Disqus