visual tiempo studio proyecto para modo modificar iconos for este ejecucion editar depurar depuracion debugger continuar configuracion compilacion codigo code chrome cambie cambiar visual-studio debugging

tiempo - Se rompe cuando cambia un valor con el depurador de Visual Studio



visual studio chrome debugger (11)

Cambie la variable en una propiedad y agregue un punto de interrupción en el método set. Ejemplo:

private bool m_Var = false; protected bool var { get { return m_var; } set { m_var = value; } }

¿Hay alguna forma de colocar un reloj en la variable y solo se puede interrumpir Visual Studio cuando ese valor cambia?

Haría mucho más fácil encontrar problemas estatales difíciles.

Se puede hacer esto?

Las condiciones de punto de interrupción aún necesitan un conjunto de puntos de interrupción, y prefiero establecer un reloj y dejar que Visual Studio establezca los puntos de interrupción en los cambios de estado.


En el menú de Visual Studio 2005:

Depurar -> Nuevo punto de interrupción -> Nuevo punto de interrupción de datos

Entrar:

&myVariable


Hacer clic derecho en el punto de interrupción funciona bien para mí (aunque principalmente lo estoy usando para puntos de interrupción condicionales en valores de variables específicos. Incluso funciona romper expresiones que involucran un nombre de hilo, lo cual es muy útil si estás tratando de detectar problemas de enhebrado).


Imagine que tiene una clase llamada A con la siguiente declaración.

class A { public: A(); private: int m_value; };

Desea que el programa se detenga cuando alguien modifique el valor de "m_value".

Ve a la definición de clase y pon un punto de interrupción en el constructor de A.

A::A() { ... // set breakpoint here }

Una vez que detuvimos el programa:

Depurar -> Nuevo punto de interrupción -> Nuevo punto de interrupción de datos ...

Dirección: & (this-> m_value)
Recuento de bytes: 4 (porque int tiene 4 bytes)

Ahora, podemos reanudar el programa. El depurador se detendrá cuando se cambie el valor.

Puedes 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 la cantidad de bytes de la variable que desea inspeccionar, puede usar 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 miras la "Pila de llamadas", puedes ver la función que cambió el valor de la variable.


Opcionalmente puede sobrecargar el operador = para la variable y puede poner el punto de interrupción dentro de la función sobrecargada en una condición específica.


Probablemente pueda hacer un uso inteligente de la función DebugBreak() .


Puede usar un punto de observación de memoria en código no administrado. Sin embargo, no estoy seguro de si están disponibles en el código administrado.


Realmente viejo post pero en caso de que alguien no lo sepa ...

En Visual Studio 2015 , puede colocar un punto de interrupción en el acceso de set de una Propiedad implementada automáticamente y el depurador se romperá cuando se actualice la propiedad

public bool IsUpdated { get; set; //set breakpoint on this line }

Actualizar

Alternativamente; @AbdulRaufMujahid ha señalado en los comentarios que si la propiedad implementada automáticamente está en una sola línea, puede colocar el cursor en el get; o set; y pulsa F9 y se colocará un punto de interrupción en consecuencia. ¡Bonito!

public bool IsUpdated { get; set; }



Si está utilizando WPF, hay una herramienta increíble: WPF Inspector .
Se adjunta a una aplicación WPF y muestra el árbol completo de controles con todas las propiedades, y le permite (entre otras cosas) romper cualquier cambio de propiedad.

Pero lamentablemente no encontré ninguna herramienta que le permita hacer lo mismo con CUALQUIER propiedad o variable.


También puede optar por romper explícitamente en el código:

// Assuming C# if (condition) { System.Diagnostics.Debugger.Break(); }

Desde MSDN:

Debugger.Break: si no hay un depurador adjunto, se les preguntará a los usuarios si desean adjuntar un depurador. En caso afirmativo, se inicia el depurador. Si se conecta un depurador, el depurador se señala con un evento de punto de interrupción de usuario y el depurador suspende la ejecución del proceso como si se hubiera alcanzado un punto de interrupción del depurador.

Sin embargo, esto es solo un retroceso. Establecer un punto de interrupción condicional en Visual Studio, como se describe en otros comentarios, es una mejor opción.