Imagine que você tem uma classe chamada A com a seguinte declaração.
class A
{
public:
A();
private:
int m_value;
};
Você deseja que o programa pare quando alguém modificar o valor de "m_value".
Vá para a definição de classe e coloque um ponto de interrupção no construtor de A.
A::A()
{
... // set breakpoint here
}
Depois que paramos o programa:
Depurar -> Novo ponto de interrupção -> Novo ponto de interrupção de dados ...
Endereço: & (this-> m_value)
Contagem de bytes: 4 (porque int possui 4 bytes)
Agora, podemos retomar o programa. O depurador irá parar quando o valor for alterado.
Você pode fazer o mesmo com classes herdadas ou classes compostas.
class B
{
private:
A m_a;
};
Endereço: & (this-> m_a.m_value)
Se você não souber o número de bytes da variável que deseja inspecionar, poderá usar o operador sizeof.
Por exemplo:
// to know the size of the word processor,
// if you want to inspect a pointer.
int wordTam = sizeof (void* );
Se você olhar para a "Pilha de chamadas", poderá ver a função que alterou o valor da variável.