Imaginez que vous ayez une classe appelée A avec la déclaration suivante.
class A
{
public:
A();
private:
int m_value;
};
Vous souhaitez que le programme s'arrête lorsque quelqu'un modifie la valeur de "m_value".
Accédez à la définition de classe et mettez un point d'arrêt dans le constructeur de A.
A::A()
{
... // set breakpoint here
}
Une fois que nous avons arrêté le programme:
Débogage -> Nouveau point d'arrêt -> Nouveau point d'arrêt des données ...
Adresse: & (this-> m_value)
Nombre d'octets: 4 (car int a 4 octets)
Maintenant, nous pouvons reprendre le programme. Le débogueur s'arrête lorsque la valeur est modifiée.
Vous pouvez faire de même avec les classes héritées ou les classes composées.
class B
{
private:
A m_a;
};
Adresse: & (this-> m_a.m_value)
Si vous ne connaissez pas le nombre d'octets de la variable que vous souhaitez inspecter, vous pouvez utiliser l'opérateur sizeof.
Par exemple:
// to know the size of the word processor,
// if you want to inspect a pointer.
int wordTam = sizeof (void* );
Si vous regardez la "pile d'appels", vous pouvez voir la fonction qui a changé la valeur de la variable.