2010-08-11 6 views
5

Habituellement lorsque vous utilisez des points d'arrêt dans Visual Studio (2008 dans cet exemple), je vois juste une liste plate. Parfois, cependant, j'obtiens une vue arborescente pour chaque point d'arrêt, comme indiqué ci-dessous (il y a 26 nœuds enfants du nœud développé). Tous les nœuds d'arbre font référence à la même ligne de code, et toutes les colonnes facultatives affichent les mêmes données pour chaque nœud. Je suppose qu'ils sont peut-être à faire avec des threads, mais à quoi servent-ils et que montrent-ils réellement? Et s'ils sont utiles, comment êtes-vous censé les distinguer?Fenêtre Visual Studio Breakpoints: que montre TreeView?

Breakpoints window http://www.freeimagehosting.net/uploads/2244242173.png

+0

Il s'agit généralement de plusieurs instanciations du même code - j'allais dire habituellement quand vous avez une classe de base générique, mais je ne peux pas le faire moi-même maintenant. Ou du moins c'était l'explication quand je programmais avec C++ et ATL. – Rup

Répondre

4

Dans mon cas, il semble se rapporter aux domaines d'application dans le processus en cours de débogage. Si je joins WinDbg au processus, charge SOS.dll et exécute !DumpDomain, je peux voir 26 AppDomains, correspondant aux 26 nœuds d'arbre dans la question. Ce serait bien s'il y avait une colonne dans la fenêtre Breakpoints qui ferait la distinction entre ceux-ci!

3

Elles sont appelées Child Breakpoints, sont peu documentées (1, 2) et sont généralement plutôt boguées.

Empiriquement, pour des points d'arrêt de l'enfant du code natif sont formés:

  1. Pour les fonctions inlined, instancié plusieurs fois,
  2. Pour les fonctions de modèle, instancié plusieurs fois,
  3. Dans les bibliothèques statiques qui sont liés contre plusieurs DLL dans le processus débogué [es],
  4. Chaque fois que le moteur de débogage s'ennuie. Sérieusement, la plupart d'entre eux semblent carrément faux.
Questions connexes