Les développeurs C++ disposent d'une fonctionnalité proposée par le debuggeur très interessante : les DataBreakpoins. Ces points d'arrêts particuliers ne sont pas positionnés sur une ligne de code précise comme les traditionnels breakpoints mais permettent de mettre en pause l'exécution d'un programme dès que la valeur d'une variable (une zone mémoire) change et ceci qu'importe où le point d'exécution se trouve lors du changement.
Visual Studio 2008 (tout comme son prédécesseur) dispose bien de cette option mais elle reste cependant tout le temps grisé si vous écrivez du code managé :
Les DataBreakpoints sont en effets malheureusement uniquement disponibles pour le code natif. Il y a cependant un coupable dans cette limitation : le garbage collector ! Celui-ci gérant la mémoire à notre place, il se peut qu'une variable soit déplacé en mémoire lors des différentes collections, ou lors du compactage de la mémoire effectué par le GC. Il faudrait donc que le runtime soit capable de distinguer si une modification a été effectué par le code du programme ou par le garbage collector ce qui ne semble pas possible à l'heure actuelle et nécessiterait une modification de la CLR.
Microsoft prévoit cependant de l'implémenter pour une future release du framework et de Visual Studio (n'hésitez d'ailleurs pas à voter sur cette suggestion si vous souhaitez accélerer les choses).