1

Existe-t-il un moyen approprié de définir un point d'arrêt conditionnel dans Visual Studio 2015 tel qu'il se brise chaque fois qu'un pointeur vers une classe de base pointe vers une sous-classe spécifiée type? (voir l'exemple de capture d'écran ci-dessous)Points d'arrêt conditionnellement rompus lorsqu'un pointeur vers une classe de base pointe sur une sous-classe spécifique

Je ne veux pas perdre de temps à écrire du code utilitaire de débogage pour cela, et je ne veux pas pirater les données de la table virtuelle.

enter image description here

Répondre

1

Deux façons de le faire:

Ajouter ci-dessous comme votre état de point d'arrêt dans votre IDE:

dynamic_cast<DerivedClassYouWantToBreak*>(ptr.get()) 

Ou ajouter ci-dessous le code à votre code et compiler:

if (dynamic_cast<DerivedClassYouWantToBreak*>(ptr.get())) 
{ 
    int breaksHere = 0; // put breakpoint here 
} 
+1

Vous venez de dire ce qu'il faut écrire dans le test du point d'arrêt conditionnel. – Blindy

+0

@Blindy génial! N'hésitez pas à modifier ma réponse pour OP. – Griffin

+0

Voir que cela m'oblige à écrire du code et recompiler puis recompiler à nouveau si je veux changer le type de classe dérivée. Maintenant la condition de point d'arrêt que j'utilise est quelque chose comme * (void **) ptr.get()! = Mais c'est très hacky et le pointeur changera probablement pour la prochaine exécution – bigD