Imagine que tiene una clase llamada A con la siguiente declaración.
class A
{
public:
A();
private:
int m_value;
};
Quiere que el programa se detenga cuando alguien modifica el valor de "m_value".
Ir a la definición de clase y poner un punto de interrupción en el constructor de A.
A::A()
{
... // set breakpoint here
}
Una vez dejamos el programa:
Depuración -> Nuevo punto de interrupción -> Nuevo punto de interrupción de datos ...
Dirección: & (this-> m_Value)
Byte Count: 4 (Porque int tiene 4 bytes)
Ahora, podemos reanudar el programa. El depurador se detendrá cuando se cambie el valor.
Puede hacer lo mismo con clases heredadas o clases compuestas.
class B
{
private:
A m_a;
};
Dirección: & (this-> m_a.m_value)
Si no conoce el número de bytes de la variable que desea inspeccionar, se puede utilizar el operador sizeof.
Por ejemplo:
// to know the size of the word processor,
// if you want to inspect a pointer.
int wordTam = sizeof (void*);
Si nos fijamos en la "pila de llamadas" se puede ver la función que cambia el valor de la variable.
pero el punto de interrupción no afecta nada a menos que la condición se mantenga, por lo que puede poner su punto de interrupción en cualquier lugar (como el Setter) y tomar desde allí. ¿O me estoy perdiendo algo? – Oskar
bien. es como la forma vb6 de depuración. no te importa la ubicación del punto de interrupción. solo agregue una expresión condicional para ver la ventana y vb6 garantizará que se romperá donde sea que se cumpla la condición. –
lo siento, nunca he visto una manera, hasta donde sé, el colocador es el camino a seguir – Oskar