35

Estoy usando Visual Studio 2010, y sé que esta característica está disponible en C++.¿Puedo establecer un punto de interrupción cuando la variable obtiene un valor específico en .NET?

Necesito depurar algún código, que cambia una variable a varios valores. Quiero depurar el código en un caso específico, cuando la variable obtiene un valor específico. Sé que puedo agregar if(var == value), pero ¿hay alguna forma elegante de hacerlo?

Otra pregunta, ¿puedo establecer un punto de interrupción cuando se cambia una variable en general?

Respuesta

71

Sin duda, es posible establecer una condición como una variable que recibe un cierto valor. Esto se conoce como una condición de punto de interrupción. Para crear uno, haz lo siguiente.

  • establecer un punto de ruptura en el punto de la variable cambia
  • clic derecho en el punto de ruptura y seleccione "Condición"
  • Type en el condicional como "theNewValue == 42"

Ahora el punto de interrupción solo se activará cuando tu condicional se evalúe como verdadero.

El segundo elemento que solicitó, que se rompe cuando cambia el valor de una variable por algún motivo, se conoce como punto de interrupción de datos. Estos solo están disponibles para el código C++. No es una opción en C#, VB.NET ni en ningún otro lenguaje administrado.

+0

¿sabe por qué el punto de interrupción de datos no está disponible en los idiomas administrados? – Delashmate

+3

@Delashmate es una limitación en la infraestructura de depuración de CLR. Las manos de Visual Studio están esencialmente atadas hasta que el CLR proporciona la capacidad – JaredPar

+0

Ok, espero que no sea una pregunta tan complicada, ¿por qué el CLR no admite esta opción? – Delashmate

4

Siempre que esté usando una edición de Visual Studio que no sea Express, puede lograr esto en C# utilizando un breakpoint condition.

En el cuadro de diálogo Breakpoint Condiciones, introduzca una expresión válida en el cuadro Condición, como myLocalVariable> 1

y

... elige ha cambiado si quieres romper cuando el valor de la expresión ha cambiado.

Para llegar al Ha cambiado opción, haga clic en el punto de interrupción en la ventana Puntos de interrupción y seleccione Condición ..., a continuación, compruebe la pantalla de abajo.

Has Changed option for breakpoint conditions

+0

Ok, ahora entiendo, lo que estaba buscado es obtener una notificación cuando la variable se cambió en general, los medios para crear un punto de ruptura de datos .. de esa manera es más general .. – Delashmate

+0

podría tener un temporizador que compruebe esto – beppe9000

3

Añadir un punto de ruptura con F9 - haga clic derecho y seleccione "Condition..." - ahora se puede agregar una condición booleana y el punto de interrupción sólo se conseguirá golpe si esa condición se evalúa como verdadera.

0

Puede hacer ambas cosas.

  1. Establezca el punto de interrupción en VS. Haga clic derecho en el punto rojo en el margen y seleccione Agregar condición. Allí puede decir var==value y seleccionar "Es verdadero".
  2. Probablemente pueda lograr esto con la opción "Ha cambiado" en el cuadro de diálogo anterior.
3

Depende del alcance de su punto de interrupción. Si la variable no es local o no estática, no podrá hacerlo.

para establecer la condición de un punto de interrupción, haga clic derecho y usted debe obtener esta pantalla:

Enter image description here

Escoja Condición ...

2

Puede usar puntos de interrupción condicionales. Sé que su pregunta fue específica para VS2010, pero tenga en cuenta que desde VS2012 en adelante, debe cambiar al Modo de compatibilidad administrada para usar puntos de interrupción condicionales en Visual Basic. ¿Por qué y cómo se describe aquí:

switching-to-managed-compatibility-mode-in-visual-studio-2013

Cuestiones relacionadas