Immagina di avere una classe chiamata A con la seguente dichiarazione.
class A
{
public:
A();
private:
int m_value;
};
Volete fermare il programma quando qualcuno modifica il valore di "m_value".
Vai alla definizione della classe e metti un breakpoint nel costruttore di A.
A::A()
{
... // set breakpoint here
}
Una volta interrotto il programma:
Debug -> Nuovo punto di interruzione -> Nuovo punto di interruzione dati ...
Indirizzo: & (this-> m_value)
Conteggio byte: 4 (Perché int ha 4 byte)
Ora, possiamo riprendere il programma. Il debugger si arresterà quando il valore viene modificato.
Puoi fare lo stesso con le classi ereditate o le classi composte.
class B
{
private:
A m_a;
};
Indirizzo: & (this-> m_a.m_value)
Se non si conosce il numero di byte della variabile che si desidera controllare, è possibile utilizzare l'operatore sizeof.
Per esempio:
// to know the size of the word processor,
// if you want to inspect a pointer.
int wordTam = sizeof (void* );
Se guardi lo "Stack di chiamate" puoi vedere la funzione che ha cambiato il valore della variabile.